Git GUI – (3) branch、conflict、merge

接續上篇文章 Git GUI – (2) 設定、Clone、Add、Modify

【四、建立分支(branch)】

如果有新功能要開發或是既有功能修改,但又不想影響到主要程式(master)的運作,這時候可以透過建立分支(branch),所有的修改動作都在「分支」中進行,各個分支是獨立作業的。比如要開發某個大功能,大功能中又切分很多細小的功能,我們可以在主線分支(master)下建立一個大功能分支,接著在大功能分支下,又切出許多細小功能的分支,也可以在分支的下面建立更細的分支,形成多重架構。當分支開發、測試結束後,再透過合併(merge)的動作,將所有分支合併回主線分支(master),或透過重造(rebase)的動作,將目前開發的分支(branch)提升為主線分支(master)。

在E:\GitDaal\下點選滑鼠右鍵,接著選取「Create Branch…」。

image100.png
image101.png

輸入分支名稱,例如:newBranch。如果是要建立其它分支下的分支,Base On 的部份選擇 Branch 的選項,再選擇要基於哪個分支下建立新分支,這邊由於我們是基於主線分支(master)建立分支,因此選擇「HEAD (master)」。將「Switch to new branch」打勾,當分支建立完成後,會將目前的環境切換到新建立的分支下。

image107.png
image109.png

在新分支中編輯的東西,並不會影響到主線分支(master),當編輯到一段落,將新分支中的東西 commit 到本地倉儲(commit 請參考三、修改(新增)檔案)。點選滑鼠右鍵,選擇「Git Branch」->「master」可快速切換至 master。master 看見的 README.txt 與 newBranch 看見的 README.txt 是不一樣的。

image111.png
image113.png

如果不知道自己現在身處於哪個分支,只要點選滑鼠右鍵,就可以在上方紅色框框看到目前所在分支。「Git Branch」子選單下有打勾的就是目前分支。以及「Git Commit -> “newBranch”」也可以看到現在是在 newBranch 分支下。

image117.png

【五、合併分支 (merge) 並解決衝突 (conflict)】

當新的分支開發到一個段落時,Git 可以提供我們合併(merge)的功能,意即將目前分支(newBranch)開發的結果合併到主線分支(master)。

滑鼠右鍵選單->「TortoiseGit」->「Merge」

image119.png

Branch 部份選擇要被合併的分支,我們要把 newBranch 合併回 master,因此選擇 newBranch。

image124.png
image126.png

若出現 Success 的字樣表示合併完成,沒有出現衝突的情況。此時視情況是否保留該 branch (可以理解成分支開發的子功能已經「加入」主線分支,該支線是否繼續保留開發功能或功成身退)。

如果合併時產生衝突(Conflict)的錯誤訊息,表示必須使用手動的方式來處理衝突。衝突的檔案會出現黃色三角形驚嘆號的圖樣。

image129.png
image131.png

在衝突的檔案上,開啟滑鼠右鍵 TortoiseGit 選單中的「Diff」。左邊是倉儲中上一個版本的檔案內容,只有五行內容,右邊則分為兩部分,從「<<<<<<< HEAD」到「=======」,表示最新版本中的內容,有六行內容,而「=======」到「>>>>>>> newBranch」是要合併的分支中的內容。此處視情況修改檔案內容,並把「<<<<<<< HEAD」「=======」「>>>>>>> newBranch」符號拿掉後存檔即完成修改。

image133.png
image135.png

修改完將檔案 commit 回本地倉儲。

image243.png

接著選取滑鼠右鍵選單中的「Git History」,如下圖,上方為目前Git的分支狀況,修改者以及修改時間…等,下方為修改內容以及註解…等等資訊。

image143.png
image145.png

下一篇文章:Git GUI – (4) fetch、merge、pull、解決衝突情況(conflict)

參考資料

  1. Git 教學(1) : Git 的基本使用 @ 好麻煩部落格http://gogojimmy.net/2012/01/17/how-to-use-git-1-git-basic/
  2. Git 教學(2):Git Branch 的操作與基本工作流程 @ 好麻煩部落格http://blog.gogojimmy.net/2012/01/21/how-to-use-git-2-basic-usage-and-worflow/
  3. Git 情境劇 @ 好麻煩部落格http://blog.gogojimmy.net/2012/02/29/git-scenario/

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *