Monday, 6 February 2017

Git 解決合併分支時的檔案衝突 Resolve conflicts while merging branches

Preface

上一篇的筆記有提到如何進行 Git 分支合併,但在多人協同開發的環境底下,往往一定會遇到檔案發生衝突的狀況。這裡教大家單純的使用 Git 的 checkout 功能來解決衝突。

Tutorial

當你使用 merge 指令去合併分支的時候,有衝突發生時,Git 會要求使用者解決衝突,才能夠完成 merge 的動作。當 Auto merge 沒有成功時候會跳出警告的訊息。

解決衝突的三個方法:

  1. 直接打開該檔案進行修改
  2. 使用 checkout --theirs, checkout --ours 來直接選定要改為哪個 branch 上的版本

1. 直接打開檔案進行修改

這個方法很直覺,可以避免掉很多錯誤。因為你必須逐行的處理衝突的檔案。

修改完有衝突的檔案後,可以直接循 commit 的流程來完成 merge 的動作
$ git add --all
$ git commit

2. checkout --theirs, checkout --ours

這是一個比較快速的做法,可以執行 status 指令來查詢

$ git status

modified a.file
modified b.file

both modified c.file
此時 c.file 被標記為 both modified 的檔案,c.file 就是發生衝突的檔案,此時要確認哪個分支上的版本是最新版的。這裡假設 feature branch 上的 c.file 是最新版的。則執行下列指令

#請注意 --ours, --theirs 指的是哪個分支上的 c.file
#我們已經切換到 develop branch 上
#所以 --ours 指的是 develop 上的 c.file
#欲使用 feature branch 上的 c.file 所以要使用 --theirs

$ git checkout --theirs c.file
$ git add c.file
此時會我們再用 status 確認一次目前分支的狀態會得到下列的結果

$ git status

modified a.file
modified b.file
modified c.file
c.file 也被標記為 modified 之後,就可以進行 commit 了
$ git commit -a

Related Posts:

  • Git 回復 commit 為 staging Preface 先前已經有介紹過 Git flow 開發流程,Git 的開發過程中會經常地使用 commit 的這個動作。如此一來一定會很常遇到要把最近一次的 commit 回復到 staging 進行重新修改,以利於把這一系列有相關的修改統整為一次的 commit。便於 code review… Read More
  • Git 使用 stash 功能來暫存目前修改的狀態 Preface 目前個人使用 Git 遇到會需要使用 stash 功能情境為,目前的 feature branch 開發到一半,但是有一個臨時的 hotfix 需要先進行修改。手邊目前的 feature branch 功能也還沒有完成到適合 commit 的狀態。想要在不進行 commit 的狀… Read More
  • Git 編輯修改 commit message Preface 在使用 Git 或多或少應該會遇到這樣的狀況,也就是 commit message 少寫了一些資訊,造成了團隊其他成員的困擾。此時養成紀錄完整的 commit message 是很重要的。如果有時候難免會發生,這裡就簡單的記錄一下,編輯修改 commit message 的方法。… Read More
  • Git Flow 開發流程 Preface 開始工作上班之後,必須照著公司軟體開發流程走。每間公司可能會有不同的軟體開發流程,所利用的軟體版本控制工具也可能不同。這裡介紹的軟體版本控制工具為 Git。所採用的流程類似 Git Flow。 1. 開發人員會先從原本的 master branch 或 develop bran… Read More
  • Git 合併分支 Merge feature branch to develop branch or master branch Preface 根據 Git Flow 開發流程,這裡記錄的是最後一步,功能開發完成後要將 feature branch 合併回 develop branch 或 master branch。這裡將合併的指令操作流程記錄下來。 Tutorial 首先,確認要合併 feature branch… Read More

0 comments:

Post a Comment