快速學習Git-Tortoise Git實現分支管理
- 2019 年 12 月 25 日
- 筆記
創建合併分支
在我們每次的提交,Git都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git里,這個分支叫主分支,即master分支。HEAD指針嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當前分支。
一開始的時候,master分支是一條線,Git用master指向最新的提交,再用HEAD指向master,就能確定當前分支,以及當前分支的提交點:

每次提交,master分支都會向前移動一步,這樣,隨著你不斷提交,master分支的線也越來越長。 當我們創建新的分支,例如dev時,Git新建了一個指針叫dev,指向master相同的提交,再把HEAD指向dev,就表示當前分支在dev上:

你看,Git創建一個分支很快,因為除了增加一個dev指針,改改HEAD的指向,工作區的文件都沒有任何變化!
不過,從現在開始,對工作區的修改和提交就是針對dev分支了,比如新提交一次後,dev指針往前移動一步,而master指針不變:

假如我們在dev上的工作完成了,就可以把dev合併到master上。Git怎麼合併呢?最簡單的方法,就是直接把master指向dev的當前提交,就完成了合併:

所以Git合併分支也很快!就改改指針,工作區內容也不變!
合併完分支後,甚至可以刪除dev分支。刪除dev分支就是把dev指針給刪掉,刪掉後,我們就剩下了一條master分支:

使用TortoiseGit實現分支管理
創建分支
在本地倉庫文件夾中點擊右鍵,然後從菜單中選擇「創建分支」:

如果想創建完畢後直接切換到新分支可以勾選「切換到新分支」選項或者從菜單中選擇「切換/檢出」來切換分支:

合併分支
分支切換到dev後就可以對工作區的文件進行修改,然後提交到dev分支原理的master分支不受影響。例如我們修改mytest.txt中的內容,然後提交到dev分支。


切換到master分支後還是原理的內容

將dev分支的內容合併到master分支,當前分支為master。從右鍵菜單中選擇「合併」

再查看mytest.txt的內容就已經更新了

解決衝突
兩個分支中編輯的內容都是相互獨立互不干擾的,那麼如果在兩個分支中都對同一個文件進行編輯,然後再合併,就有可能會出現衝突。
例如在master分支中對mytest.txt進行編輯:

然後提交到版本庫。

切換到dev分支,對mytest.txt進行編輯:


最後進行分支合併,例如將dev分支合併到master分支。需要先切換到master分支然後進行分支合併。

出現版本衝突。

衝突需要手動解決。

在衝突文件上單機右鍵選擇「解決衝突」菜單項:


把衝突解決完畢的文件提交到版本庫就可以了。
