本文為 Git 指令基本介紹教學,第 5 篇:
- Git 新手入門指南
- Git 分支與版本控制入門指南
- Git merge 與 rebase 初學者指南
- Git Reset:退回版本與分支拆分指南
- 解決 Git 衝突 (Conflict) 的完整指南 👈 所在位置
若已有基本認識,可前往閱讀 GitHub 操作指令教學 系列
在使用 Git 進行版本控制時,當兩個分支嘗試合併,且修改的區域過於接近時,可能會發生衝突 (Conflict)。
本文將向新手介紹如何識別、解決衝突,以及使用正確的指令完成合併。
什麼是 Git 衝突?
當兩個分支中有相同檔案的重疊修改,Git 無法自動合併這些變更時,就會產生衝突。
例如:
master分支對檔案的某一部分進行了修改。feature分支在相同位置進行了不同的修改。
執行 git merge 或 git rebase 時,Git 會提示衝突,並要求手動解決。
衝突時的檔案內容
當發生衝突時,Git 會在衝突檔案中新增標記,提示衝突的具體位置。以下是範例檔案內容:
<<<<<<< HEAD
這是 master 分支的內容。
=======
這是 feature 分支的內容。
>>>>>>> feature衝突標記的解讀
<<<<<<< HEAD:表示HEAD分支(當前分支)的內容。=======:分隔符,分隔兩個分支的變更。>>>>>>> feature:表示另一個分支(例如feature)的內容。
解決衝突的步驟
確認衝突檔案
執行合併或重整基底 (rebase) 後,Git 會列出衝突檔案:
git status範例輸出:
both modified: example.txt編輯檔案並解決衝突
打開衝突檔案,移除 Git 的衝突標記,並手動合併內容。
例如:
這是 master 和 feature 分支合併後的內容。標記衝突已解決
完成修改後,將修復的檔案加入暫存區:
git add example.txt提交或繼續操作
在解決衝突後,需要根據使用的合併方式選擇合適的指令來完成操作:
如果使用 git merge
當進行合併操作(git merge)時,解決衝突後需要提交以完成合併。執行以下指令:
git commit -m "解決衝突並完成合併"這將生成一個新的合併提交節點,將兩個分支的變更整合到一起。
如果使用 git rebase
當進行重整基底操作(git rebase)時,解決衝突後需要繼續完成剩餘的基底變更。
執行以下指令:
git rebase --continueGit 會自動應用剩餘的提交,直到重整基底完成。
如果再次發生衝突,重複上述解決步驟,直到所有變更應用完畢。
小提醒
- 確保在解決衝突後,所有相關檔案已使用
git add加入暫存區,否則無法執行commit或rebase --continue。 - 在團隊協作中,請務必清楚記錄解決衝突的內容,方便未來的追蹤與審查。
衝突的預防措施
- 頻繁同步分支
維持分支與遠端儲存庫的同步,可減少衝突的機率:git pull origin main - 分支專注單一功能
每個分支應該專注於單一功能或修復,避免多重修改導致衝突。 - 明確溝通與分工
團隊合作時,提前協商修改計劃,避免重疊編輯。
結語
Git 衝突是版本控制中常見的情境,但只要掌握基本的處理流程,就能快速解決問題。無
論是使用 git merge 還是 git rebase,遵循正確的步驟,編輯衝突檔案並完成提交,都能確保專案的穩定性與一致性。