日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用git

發布時間:2025/7/25 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用git 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. Git是什么?

Git是目前世界上最先進的分布式版本控制系統(沒有之一)

2. 安裝Git

2.1 linux安裝Git

debian或者Ubuntu Linux:sudo apt-get install git
如果是其他linux版本,可以直接通過源碼安裝。先從Git官網下載源碼,解壓,依次輸入:
./config, make, sudo make install

2.2 Windows上安裝Git

可以從官網上直接下載安裝程序,默認安裝即可,安裝完成會有Git Bash,類似一個linux命令行的窗口

3. 設置

安裝完成進行如下設置
$ git config --global user.name "your name"
$ git config --global user.email "email@example.com"

4. 創建版本庫

找到一個合適的地方,創建一個空的文件夾
mkdir learngit
cd learngit
pwd
通過git init 命令把這個目錄編程Git可以管理的倉庫
git init
會生成一個.git的目錄

5.把文件添加到版本庫

先創建一個文本文件如readme.txt,里面內容如下
it is a git test
將文件添加到倉庫
git add readme.txt
然后執行git commit 將文件提交到倉庫
git commit -m "add readme.txt"
通過命令git status可以查看倉庫的當前狀態

6. 查看修改的內容

修改文件readme.txt里的內容,執行git add 和git commit
然后通過git diff 可以查看修改的內容

7. 版本回滾

HEAD指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令
git reset --hard commint_id
穿梭前,可以用git log查看提交的歷史,以便確定要回退到哪個版本
要重返未來,用git reflog查看歷史命令,一邊確定回到未來的哪個版本

8.工作區和暫存區

8.1 工作區

就是在自己電腦里能看到的目錄

8.2 版本庫

工作區有一個隱藏目錄.git,這一個不算工作區,而是Git的版本庫
將文件網版本庫里提交的時候,分兩步執行
第一步:git add將文件添加進去,實際上就是把文件修改添加到暫存區
第二步:git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支。

9. 管理修改

Git跟蹤并管理的是修改,而不是文件
所以每次修改之后都要在提交前執行git add,如果git add之后,再修改文件git commit,第二次修改的內容將丟失

10. 撤銷修改

未執行git add之前可以使用git status查看,并執行git checkout -- file 可以丟棄工作區的修改
如$ git checkout -- readme.txt
如果執行了git add之后,再未提交之前,使用git reset HEAD
如 git reset HEAD readme.txt

11 刪除文件

在Git中,刪除也是一個修改操作,我們添加一個新文件test.txt到Git并且提交
執行rm test.txt
這個時候,執行git status查看,會告訴我們哪些文件被刪除了
現在可以有兩個選擇,一是確定從版本庫中刪除該文件
git rm test.txt并且執行git commit, 文件就從版本庫中刪除了
如果想恢復,可以執行git checkout -- text.txt從版本庫中恢復

12. 遠程倉庫

GitHub提供Git倉庫托管服務,先注冊的一個GitHub賬號

12.1 創建SSH Key

在用戶主目錄下執行ssh-keygen -t rsa -C "email@example.com"
會生成一個.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件

12.2登陸GitHub,打開“Account settings”, "SSH Keys"

點擊“Add SSH Key”,填上任意Title,在key文本框里粘貼id_rsa.pub文件的內容,點擊“Add Key”

12.3 創建一個遠程的倉庫

登陸GitHub,然后,在右上角找到“Create a new repo”按鈕,創建一個新的倉庫例如spider
然后再本地執行命令
git remote add origin git@github.com:chenliang1995/spider.git
添加成功后,需要執行
git push origin master
把本地master分支的最新修改推送至GitHub
如果報錯為
Permanently added the RSA host key for IP address '13.229.188.59' to the list of known hosts
需要將13.229.188.59 github.com添加到/etc/hosts中(linux)或者/c/windows/system32/drivers/etc/hosts(windows)
如若報錯為
refusing to merge unrelated histories
可以使用命令git pull origin master -allow-unrelated-histories強制將文件拉取到本地倉庫,再推送到遠程倉庫上

12.4 從遠程克隆

假若本地沒有倉庫,可以從遠程克隆
git clone git@github.com:chenliang1995/spider.git
同時,GitHub支持https,類似https://github.com/chenliang1995/spider.git這樣的地址

13 分支管理

13.1 創建與合并分支

  • 一開始的時候,master分支是一條線,Git用master指向最新的提交,再用HEAD指向master,就能確定當前分支,以及當前分支的提交點
  • 每次提交,master分支都會向前移動一步,這樣,隨著你不斷提交,master分支的線也越來越長。
  • 當我們創建一個新的分支,例如dev是,Git新建了一個指針叫dev,指向master相同的提交,再把HEAD指向dev,就表示當前分支在dev上。
  • 不過從現在開始,對工作區的修改和提交就是針對dev分支了,比如新提交一次后,dev指針往前移動一步,而master指針不變。
  • 假如我們在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最簡單的方法,就是直接把master指向dev的當前提交,就完成了合并。
  • 合并分支后,甚至可以刪除dev分支,刪除dev分支就是把dev指針給刪掉,刪除后,我們就剩下一個master分支了

    具體操作實戰:
  • 首先,我們創建一個dev分支,然后切換到dev分支
    git checkout -b dev
    這條命令相當于
    git branch dev和git checkout dev
    -b參數表示創建并切換
  • git branch查看當前分支
    列出所有分支,當前分支前面會標有一個*號
  • 修改分支上的文件并提交
    比如我們對readme.txt進行修改,加上一行
    Creating a new branch is quick
    然后提交
    git add readme.txt
    git commit -m "branch test"
  • 查看master分支
    現在,dev分支上的工作完成,我們就可以切換回master分支
    git checkout master
    可以發現文件readme.txt添加的內容不見了,因為剛才提交的是在dev分支上,而master分支此可的提交點并沒有發生改變
    5 合并
    現在我們把dev分支的工作成果合并到master分支上
    git merge dev
    這個命令用于合并指定分支到當前分支上,合并后,再查看readme.txt的內容,可以看到,和dev分支的提交是完全一樣的
  • 刪除分支
    合并完成后,就可以放心的刪除分支dev了
    git branch -d dev
    刪除后執行git branch查看分支,發現只剩下一個master分支
    由于創建、合并和刪除分支非常快,所以Git鼓勵使用分支完成某個任務,合并后再刪除分支,這和直接在master分支上工作效果是一樣的,但更加安全
  • 13.2 解決沖突

    有時候,合并分支會出現異常比如:

  • 我們準備一個新的分支
    git chechout -b featurel
    修改readme.txt最后一行,改為
    Creating a new branch featurel
    在分支feature1分支上提交
    git add readme.txt
  • 切換到master分支
    git checkout master
    在master分支上把readme.txt文件的最后一行改為
    Creating a new branch is quick & simple
    提交
    git add readme.txt
    git commit -m "& simple"
    3 合并
    git merge featurel
    這種情況下,Git無法執行‘快速合并’,只能試圖把各自的修改合并器來,但這種合并就可能有沖突,
    此時需要我們進行手動解決
    git status可以告訴我們沖突的文件
  • 修改master分支下readme.txt
    Creating a new branch featurel
    再提交
    git add readme.txt
    git commit -m "conflict fixed"
    完成,git log --graph --pretty=oneline --abbrev-commit
    可以查看合并情況
  • 刪除分支featurel分支
    git branch -d featurel
    工作完成
    所以當Git無法自動合并分支是,就必須首先解決沖突,解決沖突后,再提交,合并完成,
    用git log --graph命令可以看到合并圖
  • 13.3 分支管理策略

    git merge devGit會用Fast foward模式,但這種模式下,刪除分支后,會丟失分支信息
    如果要強制禁用Fast foward模式,Git就會再merge時生成一個新的commit,這樣,從分支歷史上就可以看出分支信息
    git merge --no-ff -m "merge with no-ff" dev
    因為合并要創建一個新的commit,所以加上-m參數,把commit描述寫進去

    13.4 bug分支

    • 當我們接到一個bug時,工作只進行到了一半,還沒辦法提交,預計完成還需一天時間,但是,必須再兩個小時內修復該bug,怎么辦?
    • Git提供了一個stash功能,可以把當前工作現場“儲存”起來,等以后恢復現場后繼續工作
      git stash
    • 現在,用git status查看工作區,就是干凈的(除非沒有被Git管理的文件),因此可以放心的創建分支來修復bug
    • 首先確定在哪個分支上修復bug,假定需要在master分支上修復,就從master創建臨時分支
      git checkout master
      git checkout -b issue-101
    • 現在修復bug,需要把redme.txt種的修改,然后提交
      git add readme.txt
      git commit -m "fix bug 101"
    • 修復完成后,切換到master分支,并完成合并,最后刪除issue-101分支
      git checkout master
      git merge --no-ff -m "merged bug fix 101" issue-101
    • 可以了,bug修復完成,接著回到dev分支上干活
      git checkout dev
      git status
    • 工作區時干凈的,剛才的工作現場存到哪去了?用git stash list命令看看
      git stash list
    • 工作現場還在,Git把stash內容存在某個地方了,但是需要修復一下,有兩個辦法
      一是用git stash apply恢復,但是恢復后,stash內容并不刪除,你需要用git stash drop來刪除
      另一種方法是用git stash pop,恢復的同時把statsh內容也刪除
      再用git stash list查看,就看不到任何stash內容了
    • 你可以多次stash,恢復的時候,先用git stash list查看,然后恢復指定的stash,用命令
      git stash apply stash@{0}

    13.5 Feature分支

    軟件開發種,總有無窮無盡的新的功能要不斷添加進來,沒添加一個新的功能,我們會新建一個分支,在上面開發,文成后,合并,最后,刪除該feature分支。
    當新建的分支提交之后準備合并時,如果不需要這個新功能,我們在執行
    git branch -d feature時,Git會提醒,如果刪除,將丟失修改,
    此時我們 需要執行git branch -D feature來進行強制刪除

    13.6 多人協作

    • 當我們從遠程克隆時,實際上Git自動把本地的master分支和遠程的master分支對應起來了,并且,遠程倉庫的默認名字時origin
      要查看遠程庫的信息,用git remote
      git remote
      或者用git remote -v顯示更詳細的信息
      git remote -v
      上面顯示了可以抓取和推送的origin的地址,如果沒有推送權限,就看不到push的地址
    • 推送分支
      推送分支,就是把該分支上的所有本地提交推送到遠程庫。推送時,要指定本地分支,這樣,Git就會把該分支推送到遠程庫對應的遠程分支上
      git push origin master
      如果要推送其它分支,比如dev,就改成
      git push origin dev
    • 但是,并不是一定要把本地分支往遠程推送,那么,哪些分支需要推送,哪些不需要?
      mster分支是主分支,因此要時刻與遠程同步
      dev分支是開發分支,團隊所有隊員都需要在上面工作,所以也需要與遠程同步
      bug分支只要與在本地修復bug,就沒必要推到遠程了
      feature分支是否推到遠程,取決于你和你的小伙伴合作在上面開發

    13.7 抓取分支

    多人協作時,大家都會往master和dev分支上推送各自的修改
    現在,模擬一個你的小伙伴在另一臺電腦或者同一臺電腦的另一個目錄下克隆
    git clone git@github.com:chenliang1995/spider.git
    當你的小伙伴從遠程庫clone時,默認情況下,你的小伙伴只能看到本地的master分支
    現在,你的小伙伴要在dev分支上開發,就必須創建遠程origin的dev分支到本地,于是他用這個命令創建本地dev分支
    git checkout -b dev origin/dev
    現在,他就可以在dev上繼續修改,然后,時不時把dev分支push到遠程
    git add env.txt
    git commit -m "add env"
    當他已經向origin/dev分支推送了他的提交時,而碰巧你也對同樣的文件做了修改,并視圖推送
    git add env.txt
    git commit -m "add new env"
    git push origin dev
    推送失敗,因為你的小伙伴的最新提交和你視圖推送的提交有沖突,此時我們可以用git pull把最新的提交從origin/dev抓下來,然后,在本地合并,解決沖突,再推送
    git pull
    失敗了,根據提示,設置dev和origin/dev的鏈接
    git branch --set-upstream-to=origin/dev dev
    再pull
    git pull
    返回git pull成功,但是合并有沖突,需要手動解決,解決后,再push

    14 標簽管理

    14.1 創建標簽

    git中打標簽非常簡單,首先切換到需要打標簽的分支上
    git checkout master
    然后敲命令git tag <name>就可以打一個新的標簽
    git tag v1.0
    可以用命令git tag來查看標簽
    默認標簽是打在最新提交的commit上的,有時候,如果忘了打標簽,可以通過提交的commit id打
    git log --pretty=oneline --abbrev-commit
    git tag id
    還可以創建帶有說明的標簽,用-a指定標簽名,-m指定說明文字
    git tag -a v0.1 -m "version 0.1 released" id
    注意,標簽總是和某個commit掛鉤,如果這個commit既出現在master分支,又出現在dev分支,那么這兩個分支上都可以看到這個標簽

    14.2 操作標簽

    如果標簽打錯了,也可以刪除
    git tag -d v0.1
    如果要推送某個標簽到遠程
    git push origin <tagname>
    或者,一次性推送全部尚未推送到遠程的本地標簽
    git push origin --tags
    如果標簽已經推送到遠程,要刪除遠程標簽就得先從本地刪除
    git tag -d v0.9
    然后從遠程刪除
    git push origin :refs/tags/v0.9
    查看是否真的從遠程庫中刪除了標簽,可以登陸GitHub查看

    轉載于:https://www.cnblogs.com/chenliang0309/p/10050652.html

    總結

    以上是生活随笔為你收集整理的使用git的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。