跳轉到

3.3 合併與衝突處理#

合併分支:git merge#

在功能分支上完成開發後,把它合併回 main:

git switch main               # 先切到要被合併進去的分支
git merge feature/login       # 把 feature/login 合併進來

Git 會自動處理大多數情況:

  • Fast-forward:main 在分支分出後沒有新提交,直接把指標往前移
  • 自動合併:兩邊都有新提交但改的是不同地方,Git 自動合併並產生一個 merge commit

發生衝突(Conflict)怎麼辦?#

當兩個分支改了同一個檔案的同一行,Git 無法決定要用哪一版,就會發生衝突:

Auto-merging app.py
CONFLICT (content): Merge conflict in app.py
Automatic merge failed; fix conflicts and then commit the result.

打開衝突的檔案,會看到 Git 標記出的衝突區塊:

<<<<<<< HEAD
print("歡迎光臨")
=======
print("Welcome!")
>>>>>>> feature/login
  • <<<<<<< HEAD 到 =======:目前分支(main)的版本
  • ======= 到 >>>>>>> feature/login:要合併進來的版本

手動解衝突三步驟#

第一步:打開衝突檔案,手動編輯成你想要的樣子

刪掉 <<<<<<<、=======、>>>>>>> 這些標記,留下正確的內容(可能是其中一版,也可能是融合兩版):

print("歡迎光臨 Welcome!")

第二步:把解好的檔案加入暫存區

git add app.py

第三步:完成合併提交

git commit -m "合併 feature/login,解決 app.py 衝突"

想放棄這次合併?git merge --abort 可以回到合併前的狀態。

減少衝突的心法:分支小而短命、勤勞地 merge main 進自己的分支、團隊成員分工時盡量避免改同一個檔案。