解決 Git 衝突 (Conflict) 的完整指南

更新日期: 2024 年 12 月 9 日

本文為 Git 指令基本介紹教學,第 5 篇

  1. Git 新手入門指南
  2. Git 分支與版本控制入門指南
  3. Git merge 與 rebase 初學者指南
  4. Git Reset:退回版本與分支拆分指南
  5. 解決 Git 衝突 (Conflict) 的完整指南 👈 所在位置

若已有基本認識,可前往閱讀 GitHub 操作指令教學 系列

在使用 Git 進行版本控制時,當兩個分支嘗試合併,且修改的區域過於接近時,可能會發生衝突 (Conflict)。

本文將向新手介紹如何識別、解決衝突,以及使用正確的指令完成合併。

什麼是 Git 衝突?

當兩個分支中有相同檔案的重疊修改,Git 無法自動合併這些變更時,就會產生衝突。

例如:

  • master 分支對檔案的某一部分進行了修改。
  • feature 分支在相同位置進行了不同的修改。

執行 git mergegit 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 --continue

Git 會自動應用剩餘的提交,直到重整基底完成。

如果再次發生衝突,重複上述解決步驟,直到所有變更應用完畢。

小提醒

  • 確保在解決衝突後,所有相關檔案已使用 git add 加入暫存區,否則無法執行 commitrebase --continue
  • 在團隊協作中,請務必清楚記錄解決衝突的內容,方便未來的追蹤與審查。

衝突的預防措施

  1. 頻繁同步分支
    維持分支與遠端儲存庫的同步,可減少衝突的機率: git pull origin main
  2. 分支專注單一功能
    每個分支應該專注於單一功能或修復,避免多重修改導致衝突。
  3. 明確溝通與分工
    團隊合作時,提前協商修改計劃,避免重疊編輯。

結語

Git 衝突是版本控制中常見的情境,但只要掌握基本的處理流程,就能快速解決問題。無

論是使用 git merge 還是 git rebase,遵循正確的步驟,編輯衝突檔案並完成提交,都能確保專案的穩定性與一致性。

Similar Posts