git學習筆記——分支管理(1)

GIT學習筆記

分支管理(1)

創建與合併分支

  • 在前面學的版本回退中,我們知道,每次提交,Git都把他們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git裏,這個分支叫主分支,即master分支。HEAD嚴格來說不是指向提交,而是指向mastermaster纔是指向提交的,所以,HEAD指向的就是當前分支。
  • 一開始的時候,master分支是一條線,Git用master指向最新的提交,再用HEAD指向master,就能確定當前分支,以及當前分支的提交點:
    1
  • 每次提交,master分支都會向前移動一步,這樣,隨着不斷提交,master分支的線也越來越長
  • 當我們創建新的分支,例如dev時,Git新建了一個指針dev,指向master相同的提交,再把HEAD指向dev,就表示當前分支在dev上:
    2
  • 所以說Git創建分支很快,因爲除了增加一個dev分支,修改HEAD指向,工作區的文件沒有任何變化。
  • 但是,從現在開始,對工作區的修改和提交就是針對dev分支了,比如新提交一次後,dev指針往前移動一步,而master指針不變。
    3
  • 加入我們在dev的工作完成了,就可以吧dev合併到master上。Git合併就是直接把master指向dev的`當前提交,就完成了合併。
    4
  • 所以Git合併分支也很快,就改了下指針,工作區內容不變。
  • 合併完分支後,甚至可以刪除dev分支。刪除dev分支就是把dev指針給刪掉,刪掉後,我們就剩下了一條master分支。
    5
  • 下面開始實戰
  • 首先,我們創建dev分支,然後切換到dev分支
$ git checkout -b dev
M	readme.txt
切換到一個新分支 'dev'
  • git checkout命令加上-b參數表示創建並切換,相當於下面兩條命令:
$ git branch dev
$ git checkout dev
  • 然後,用git branch命令查看當前分支:
$ git branch
* dev
  master
  • git branch會列出所有分支,當前分支前面會標一個*號。
  • 然後,我們就可以在dev分支上正常提交,比如對readme.txt做個修改,加上一行字符,然後提交:
$ git add readme.txt 
$ git commit -m "add a new branch"
[dev 8051f1a] add a new branch
 1 file changed, 1 insertion(+), 1 deletion(-)
  • 現在,dev分支的工作完成,我們就可以切換回master分支:
$ git checkout master
切換到分支 'master'
您的分支與上游分支 'origin/master' 一致。
  • 切換回master分支後,再查看readme.txt文件,發現剛纔添加的內容不見了,其實是因爲剛纔的提交在dev分支上,而master分支此刻的提交點並沒有變:
    6
  • 現在,我們把dev分支的工作成果合併到master分支上:
$ git merge dev
更新 acc1af6..8051f1a
Fast-forward
 readme.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  • git merge命令用於合併指定分支到當前分支,合併後,再查看readme.txt的內容,就可以看到,和dev分支的最新提交是完全一樣的
  • 注意到上面的Fast-forward信息,Git告訴我們,這次合併是“快進模式”,也就是直接把master指向dev的當前提交,所以合併速度非常快。
  • 當然,也不是每次合併都能Fast-forward,後面會講到其他方式的合併。
  • 合併完成後,就可以放心的刪除dev分支了:
$ git branch -d dev
已刪除分支 dev(曾爲 8051f1a)。
  • 刪除後,查看branch,就只剩下master分支了:
$ git branch
* master
  • 因爲創建、合併、刪除分支非常快,所以Git鼓勵我們使用分支完成某個任務,合併後再刪掉分支,這和直接在master分支上工作效果是一樣的,但是過程更加安全。

switch

  • 我們注意到切換分支使用的是git checkout <branch>,而前面學過的撤銷修改是git checkout -- <file>同一個命令,有兩種作用。
  • 實際上,切換分支這個動作,使用switch更科學,因此,最新版本的Git提供了新的git switch命令來切換分支。
  • 創建並切換到新的dev分支,可以使用:
$ git switch -c dev
切換到一個新分支 'dev'
$ git switch master
切換到分支 'master'
您的分支領先 'origin/master' 共 1 個提交。
  (使用 "git push" 來發布您的本地提交)
  • 使用新的git switch命令,比git checkout要更容易理解。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章