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 合併分支 Merge feature branch to develop branch or master branch Preface 根據 Git Flow 開發流程,這裡記錄的是最後一步,功能開發完成後要將 feature branch 合併回 develop branch 或 master branch。這裡將合併的指令操作流程記錄下來。 Tutorial 首先,確認要合併 feature branch… Read More
  • Git 移動目前修改的東西到另一個分支上 Preface 有時開發的時候,會發生在錯的分支上進行修改,這時可以利用 stash 來進行搬動剛剛所做的修改。下面就做一個假設我在 master branch 上進行了開發,想要把剛剛所做的改動移動到 develop branch 上。 Tutorial //先確認目前所做的改動 $ … Read More
  • Git 使用 stash 功能來暫存目前修改的狀態 Preface 目前個人使用 Git 遇到會需要使用 stash 功能情境為,目前的 feature branch 開發到一半,但是有一個臨時的 hotfix 需要先進行修改。手邊目前的 feature branch 功能也還沒有完成到適合 commit 的狀態。想要在不進行 commit 的狀… Read More
  • Git 設定個人資訊 Preface 當使用 Git 進行版本控制時,完成 local commit 後,需要將 commit push 到 remote repository 的時候需要將個人的 profile 一同 push 到 remote repository 前,需要先設定個人的 profile。 Tut… Read More
  • SSH 設定 config 使用不同的 Key 對應不同的 Server Preface 在工作的時候常常會遇到公司的 codebase 要設定 SSH 之後才能把自己的程式碼 commit 上去,可是這時候又會遇到自己的常常在使用的 codebase 可能是 Github, Gitlab......等等其他的服務。如果需要常常將 SSH key 作切換的話蠻麻煩的。… Read More

0 comments:

Post a Comment