昨天講到了 Git Merge,但其實昨天講到 Merge 時候,我們刻意不修正改同一個檔案,但其實在不同分支,是非常有可能會修改到同一個檔案的,這時候就容易會發生「衝突 ( Conflict )」,我們今天一樣,我們透過實作來練習學習如何處理衝突問題。
■ Git Merge ( Conflict )
◆ 實作練習:在不同分支上建立同一檔案
上例是新增各別不一樣的檔案,所以合併上不會有任何問題,接下來我們來示範一下有修改到同一個檔案,導致衝突的情形。
假設我們又新增了一個新的分支,new-bugfix,並在 new-bugfix 上修改 one.txt ( 新增一行 new-bugfix in line )。
1 2 3 4 5 6 7 8 9 |
# 創建且切換到 new-bugfix git checkout -b new-bugfix echo "this is a new-bugfix text" >> one.txt git add one.txt git commit -m "new-bugfix modify one.txt" |
另外在 new-feature 也同樣修改 one.txt ( 新增一行 new-feature in line )。
1 2 3 4 5 6 7 |
git checkout new-feature echo "this is a new-feature text" >> one.txt git add one.txt git commit -m "new-feature modify one.txt" |
我們切回 master 分支,分且逐一合併 new-feature 分支和 new-bugfix 分支。
1 2 3 4 5 |
git checkout master git marge new-feature git marge new-bugfix |
在合併到 new-bugfix 的時候,發生衝突錯誤
1 2 3 4 5 |
Auto-merging one.txt CONFLICT (content): Merge conflict in one.txt Automatic merge failed; fix conflicts and then commit the result. |
我們這時候執行 git status 指令,來看看出錯訊息。
1 |
git status |
我們接著去編輯 one.txt 這個檔案。
1 |
nano one.txt |
此時 one.txt 顯示出衝突的訊息
我們把它修改成為我們要的內容
我們再來重新提交一次,就順利合併完成了。
1 2 3 |
git add one.txt git commit |
1 2 3 |
---- [master d266c1a] Merge branch 'new-bugfix' |
最後再把結果 push 到 GitHub。
1 |
git push |
作者: Gimmy
積極的人在每一次憂患中都看到一個機會
而消極的人則在每個機會都看到某種憂患