iT邦幫忙

2025 iThome 鐵人賽

DAY 9
0
自我挑戰組

Git 與 GitHub 入門日誌系列 第 9

Day 9 : 解決 Merge Conflict(合併衝突)

  • 分享至 

  • xImage
  •  

今天我們要學的是解決合併衝突!
首先聊聊,
什麼是衝突?為什麼會發生衝突?

當兩個分支同時修改了同一段程式碼或同一個檔案的相同區域,
Git 就無法自動判斷誰的版本才正確,這時就稱「分支衝突」。

這時候就需要人來決定「要用誰的改動,或者把兩邊合併在一起」。

接下來的實作,我們會先模擬出一個衝突,然後再試著解決他!


1. 模擬一個衝突

我們先建立一個分支為conflict,並切換到新分支

git checkout -b conflict

接著修改文檔,在最後一行加上conflict test:
https://ithelp.ithome.com.tw/upload/images/20250920/20169195PkBgjFR7kl.png

然後提交:

git add readme.txt
git commit -m "conflict"

下一步,
切回 master,修改同一個檔案的最後一行:
https://ithelp.ithome.com.tw/upload/images/20250920/20169195sjHdf5FVnH.png

也提交:

git add readme.txt
git commit -m "master"

最後我們嘗試合併:

git merge conflict

這時候就會看到衝突訊息:
https://ithelp.ithome.com.tw/upload/images/20250920/20169195Gxzs7ADADD.png

打開 readme.txt ,你會看到類似這樣的東西,這就是 git 標示的衝突訊息:
https://ithelp.ithome.com.tw/upload/images/20250920/20169195aQlhZ29lxy.png

  • <<<<<<< HEAD:代表目前所在分支的內容

  • =======:分隔線

  • Conflict:代表要合併進來的分支內容

2. 解決衝突的方法

我們已經成功製造出衝突狀況,現在我們要試著解決它。
這時我們要手動編輯檔案,把你要的內容留下來!
是的,我以為會有什麼神奇的方法,
結果是用人工決定要哪個版本~
https://ithelp.ithome.com.tw/upload/images/20250920/20169195KCLP7cfpO8.png

然後存檔,接著:

git add readme.txt
git commit -m "解決衝突"

只要最後能和之前一樣提交成功,
衝突也就解決囉!
看來也沒有想像中的困難!!!


小結
衝突發生是因為同一個區塊被不同分支同時修改
而 Git 會用特殊標記把衝突地方標出來,
解決方式就是「人工決定」最後的樣子,然後重新提交。


上一篇
Day 8 : Git merge(分支合併)
系列文
Git 與 GitHub 入門日誌9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言