版本控制

合併衝突(merge conflict)

合併衝突(merge conflict)發生在兩個分支以不同的方式改動了檔案裡的同一行,而 Git 分不清你到底想要哪個版本的時候。它不會亂猜、冒著挑錯的風險,而是停下來,把決定權交給你。這不是失敗——而是 Git 誠實地承認:有些選擇只有人才能做。

Git 會用三行你很快會認得的標記,把衝突直接標在檔案裡:<<<<<<< 開啟你這一側,======= 把兩個版本分開,>>>>>>> 收尾對方那一側。第一個標記到 ======= 之間是你這個分支的版本;======= 到最後一個標記之間,是對方的版本。

解決它是件需要靜下心來的活:打開檔案,想清楚最終這幾行到底該寫成什麼——留你的、留對方的,或者把兩者揉在一起——然後把那三行標記全部刪掉,讓剩下的內容讀起來就是正常的程式碼。儲存,把檔案加入暫存(stage),再完成合併。那些標記必須消失乾淨;只要還剩一個,就說明你還沒真正解決。

<<<<<<< HEAD
greeting = "Hello"
=======
greeting = "Hi there"
>>>>>>> fix-login

同一行的兩個版本:======= 上面是你的,下面是對方的。挑一個,再把三行標記全刪掉。

第一次遇到衝突會覺得嚇人,到第十次就習以為常了。解決辦法永遠一樣:把檔案改對、刪掉標記,搞定。

又稱
conflictmerge conflict markersconflict markers