在Git協作開發中,分支合併是常有的操作,但“衝突”往往是新手最頭疼的問題——就像兩個隊友同時修改了同一個文件的同一行代碼,Git不知道該聽誰的,只能暫停下來讓你手動解決。別慌!掌握這3個實用技巧,輕鬆化解衝突不再難。

技巧一:看懂衝突標記,手動修改衝突

當你執行 git merge 目標分支git rebase 目標分支 時,如果出現 Automatic merge failed(自動合併失敗),說明有衝突。這時候,Git會在衝突文件裏用特殊標記標出矛盾區域,你需要先看懂這些標記,再手動修改。

具體步驟:

  1. 定位衝突文件
    執行 git status,Git會列出所有衝突的文件(比如 both modified: yourfile.txt)。

  2. 打開衝突文件,找到標記
    打開衝突文件,你會看到類似這樣的內容:

   <<<<<<< HEAD  // 當前分支(比如dev)的代碼
   我在dev分支修改了這行
   =======  // 分隔線
   我在feature分支也修改了這行
   >>>>>>> feature  // 待合併分支(比如feature)的代碼
  • <<<<<<< HEAD======= 之間:是你當前分支(比如 dev)的修改。
  • =======>>>>>>> 之間:是待合併分支(比如 feature)的修改。
  1. 修改並保留正確代碼
    根據業務邏輯,刪除不需要的部分,保留正確的代碼。比如:
    - 如果你需要同時保留兩個分支的修改,就在中間補充合併後的邏輯(比如合併註釋、整合功能)。
    - 如果你確定只需要其中一個分支的修改,就刪掉另一個分支的代碼,只留自己需要的部分。

  2. 標記爲已解決
    修改完成後,執行 git add 衝突文件(比如 git add yourfile.txt),告訴Git“衝突已解決”。

  3. 繼續合併流程
    如果是 merge,執行 git merge --continue;如果是 rebase,執行 git rebase --continue,完成合並。

技巧二:用可視化工具,一鍵解決衝突

手動改代碼容易出錯,其實主流編輯器或Git客戶端都自帶“可視化衝突解決工具”,操作更直觀。以 VS Code 爲例(新手最常用):

具體步驟:

  1. 打開衝突文件
    衝突發生後,VS Code會自動高亮衝突區域,左側顯示“當前分支代碼”,右側顯示“待合併分支代碼”。

  2. 點擊按鈕快速選擇
    - 想保留當前分支代碼:點擊左側代碼旁的「Accept Current Change」。
    - 想保留待合併分支代碼:點擊右側代碼旁的「Accept Incoming Change」。
    - 想合併兩邊代碼:點擊「Accept Both Changes」(適合需要整合的場景)。
    - 想對比細節:點擊「Compare Changes」,逐行對比後手動選擇。

  3. 保存並標記解決
    確認修改後,保存文件,執行 git add 衝突文件,然後繼續合併流程。

技巧三:提前準備,從源頭減少衝突

解決衝突的最高境界是“不讓衝突發生”!養成這兩個習慣,衝突會少很多:

習慣1:合併前拉取最新代碼

在合併目標分支前,先確保自己的分支是基於“最新版本”創建的。比如:

# 1. 切換到目標分支(比如主分支master)
git checkout master  
# 2. 拉取最新代碼(避免本地版本太舊)
git pull origin master  
# 3. 切回自己的分支(比如dev)
git checkout dev  
# 4. 合併目標分支(此時衝突會少很多)
git merge master  

習慣2:小步合併,頻繁同步

不要等到代碼“堆成山”才合併!比如:
- 每天完成一個小功能就合併到主分支(比如 git merge feature/xxx)。
- 合併後及時測試,發現問題快速修復,避免差異越來越大。

總結

解決Git分支合併衝突,核心是:
1. 看懂標記,手動修改:這是基礎技能,必須掌握。
2. 善用工具,一鍵解決:用編輯器或客戶端的可視化工具,比純命令行更高效。
3. 提前準備,減少衝突:拉取最新代碼、小步合併,從根源降低衝突概率。

剛開始可能覺得麻煩,但多練習幾次,你會發現衝突其實很“友好”——畢竟,Git只是在提醒你“代碼需要更清晰的分工”。加油,你很快就能熟練駕馭分支合併啦!

小夜