Git(四):分支管理

一、分支概述

分支管理爲我們提供了多人同時開發的便利。假設你準備開發一個新功能,但是需要兩週才能完成,第一週你寫了50%的代碼,如果立刻提交,由於代碼還沒寫完,不完整的代碼庫會導致別人不能幹活了。如果等代碼全部寫完再一次提交,又存在丟失每天進度的巨大風險。

現在有了分支,就不用怕了。你創建了一個屬於你自己的分支,別人看不到,還繼續在原來的分支上正常工作,而你在自己的分支上幹活,想提交就提交,直到開發完畢後,再一次性合併到原來的分支上,這樣,既安全,又不影響別人工作。

二、分支管理本質

每次提交,Git都把它們串成一條時間線,這條時間線就是一個分支。在Git裏,這個分支叫主分支,即master分支。HEAD嚴格來說不是指向提交,而是指向master,master纔是指向提交的,所以,HEAD指向的就是當前分支。

一開始的時候,master分支是一條線,Git用master指向最新的提交,再用HEAD指向master,就能確定當前分支,以及當前分支的提交點:
在這裏插入圖片描述

每次提交,master分支都會向前移動一步,這樣,隨着你不斷提交,master分支的線也越來越長。

當我們創建新的分支,例如創建新的分支名爲testing時,Git就新建一個指針叫testing,指向master相同的提交。當我們切換分支時,再把HEAD指向testing,就表示當前分支在testing上:
在這裏插入圖片描述
切換到testing分支後,對工作區的修改和提交就是針對testing分支了,比如新提交一次後,testing指針往前移動一步,而master指針不變:
在這裏插入圖片描述
假如我們在testing上的工作完成了,而master分支的內容沒有改變,就可以把testing合併到master上。就是切換回master分支後,直接把master指向testing的當前提交,就完成了合併:
在這裏插入圖片描述
另一種情況是當master分支和testing分支都各自有了新的提交,變成這樣:
在這裏插入圖片描述
這種情況下當我們切換回master分支,進行合併時,Git無法執行“快速合併”,只能試圖把各自的修改合併起來,但這種合併就可能會有衝突。當有衝突時就必須需要我們手動解決衝突後,再自行提交。提交成功後就類似以下這樣:
在這裏插入圖片描述

三、分支操作的命令

1.創建分支

git branch [分支名]

創建一個新的名爲hot_fix的分支:
在這裏插入圖片描述
另外還可以使用git checkoutgit switch命令來創建並切換分支

git checkout -b [分支名]
git switch -c [分支名]
#上面的命令相當於以下兩個命令:
git branch [分支名]
git checkout [分支名]

2.查看分支

git beanch -v

查看所有的分支,當前分支前面會標一個*號,當前正處在master分支:
在這裏插入圖片描述

3.切換分支

git checkout [分支名]
#新版本的Git提供了git switch來切換分支,這個命令更容易理解。
git switch [分支名]

切換到hot_fix分支上:
在這裏插入圖片描述

4.合併分支

要合併分支,首先要切換到接受修改的分支上,再執行merge命令進行合併,命令如下:

git merge [分支名]

使用示例;
在test.txt文件中進行修改並提交,然後切換分支回到master中:
在這裏插入圖片描述
進行合併操作,然後查看文件內容:
在這裏插入圖片描述

5.解決衝突

合併後發生衝突的情況示例:
在這裏插入圖片描述
解決衝突:
此時我們必須手動解決衝突後提交,這裏Git用<<<<<<<=======>>>>>>>標記出不同分支的內容,首先需要確定如何修改後編輯文件,需要刪除特殊符號和多餘內容。
在這裏插入圖片描述
然後將文件提交到暫存區然後提交,這裏的提交不能添加具體的文件名:
在這裏插入圖片描述
這樣就解決了分支衝突的情況。

使用git log加上相應參數來查看分支合併情況:

git log --graph --pretty=oneline --abbrev-commit

在這裏插入圖片描述

6.刪除分支

刪除分支的命令,如下:

git branch -d [分支名]

刪除掉分支名hot_fix的分支:
在這裏插入圖片描述

四、總結

分支管理的相關命令:

  • 查看分支:git branch
  • 創建分支:git branch [分支名]
  • 創建+切換分支:git checkout -b [分支名]git switch -c [分支名]
  • 切換分支:git checkout [分支名]git switch [分支名]
  • 合併某分支到當前分支:git merge [分支名]
  • 刪除分支:git branch -d [分支名]

參考:創建與合併分支

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章