今天我們要學的是解決合併衝突!
首先聊聊,
什麼是衝突?為什麼會發生衝突?
當兩個分支同時修改了同一段程式碼或同一個檔案的相同區域,
Git 就無法自動判斷誰的版本才正確,這時就稱「分支衝突」。
這時候就需要人來決定「要用誰的改動,或者把兩邊合併在一起」。
接下來的實作,我們會先模擬出一個衝突,然後再試著解決他!
1. 模擬一個衝突
我們先建立一個分支為conflict,並切換到新分支
git checkout -b conflict
接著修改文檔,在最後一行加上conflict test:
然後提交:
git add readme.txt
git commit -m "conflict"
下一步,
切回 master,修改同一個檔案的最後一行:
也提交:
git add readme.txt
git commit -m "master"
最後我們嘗試合併:
git merge conflict
這時候就會看到衝突訊息:
打開 readme.txt ,你會看到類似這樣的東西,這就是 git 標示的衝突訊息:
<<<<<<< HEAD:代表目前所在分支的內容
=======:分隔線
Conflict:代表要合併進來的分支內容
2. 解決衝突的方法
我們已經成功製造出衝突狀況,現在我們要試著解決它。
這時我們要手動編輯檔案,把你要的內容留下來!
是的,我以為會有什麼神奇的方法,
結果是用人工決定要哪個版本~
然後存檔,接著:
git add readme.txt
git commit -m "解決衝突"
只要最後能和之前一樣提交成功,
衝突也就解決囉!
看來也沒有想像中的困難!!!
小結
衝突發生是因為同一個區塊被不同分支同時修改,
而 Git 會用特殊標記把衝突地方標出來,
解決方式就是「人工決定」最後的樣子,然後重新提交。