Preface
上一篇的筆記有提到如何進行 Git 分支合併,但在多人協同開發的環境底下,往往一定會遇到檔案發生衝突的狀況。這裡教大家單純的使用 Git 的 checkout 功能來解決衝突。
Tutorial
當你使用 merge 指令去合併分支的時候,有衝突發生時,Git 會要求使用者解決衝突,才能夠完成 merge 的動作。當 Auto merge 沒有成功時候會跳出警告的訊息。
解決衝突的三個方法:
解決衝突的三個方法:
- 直接打開該檔案進行修改
- 使用 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
0 comments:
Post a Comment