iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
Modern Web

Git 起來!每日一招學起來系列 第 10

Day 10:git merge —— 分支的匯流

  • 分享至 

  • xImage
  •  

在前幾天的文章中,我們已經學會了如何建立分支 (git branch)、切換分支 (git switch / git checkout),以及如何暫存修改 (git stash)。

分支開出去後,總要回到主線,否則專案就像「平行宇宙」般分裂。

今天的主角 —— git merge,就是 Git 世界裡的「橋樑建設者」,負責把分支合併,讓程式碼重新會合。


為什麼需要 git merge

想像團隊開發情境:

  • 你在 feature/login 分支開發登入功能
  • 同事在 feature/cart 分支開發購物車功能

最終這些功能都要合併回 main 分支,才能一起上線。

這時候,git merge 就派上用場,它會把不同分支上的修改「匯流」到同一條線上,維持專案歷史的完整性。


基本用法

切換到要合併的目標分支(通常是 main):

git switch main

執行合併:

git merge feature/login

Git 會將 feature/login 分支的修改整合到 main 分支。


merge 的三種結果

快速前進(Fast-forward)

當目標分支沒有新的 commit 時,Git 會直接把目標分支指標移到來源分支的最新 commit。

  • 特點:不會產生額外的 merge commit
  • 歷史圖:看起來就像目標分支瞬間追上來源分支

自動合併(Auto merge)

當目標分支和來源分支都有 commit,但修改的內容不衝突時,Git 會自動合併,並生成新的 merge commit。

  • 歷史圖:呈現分叉再合流的結構
  • 特點:保留分支的存在感

衝突(Merge conflict)

當兩個分支修改了同一檔案的同一行,Git 無法自動判斷誰對誰錯,就會產生衝突。

開發者需要手動解決衝突,然後重新提交。

衝突範例

<<<<<<< HEAD
這是 main 分支的版本
=======
這是 feature/login 分支的版本
>>>>>>> feature/login

解決步驟

  1. 編輯檔案,保留正確內容:

    這是最終決定的版本
    
  2. 將檔案加入暫存區:

    git add README.md
    
  3. 完成合併 commit:

    git commit
    

注意事項

  • merge 會保留分支歷史,適合保留開發脈絡
  • 若不希望留下 merge commit,可使用 git rebase(需謹慎操作)
  • 團隊開發時,衝突是正常現象,保持冷靜,按照流程解決即可

小練習 💪

  1. 建立新分支 feature/test,修改檔案並 commit
  2. 切換回 main,使用 git merge feature/test 合併修改
  3. 嘗試製造衝突,練習衝突解決流程
  4. 使用:git log --graph --oneline,觀察 merge 的結果

小結

  • git merge 是分支的「會合點」,讓開出去的分支能回到主線
  • 可能結果:快速前進、自動合併、衝突需手動解決
  • 適當使用 merge,可保持分支歷史清晰,確保專案整合順利

上一篇
Day 9:git stash —— 臨時收納箱,切分支不用慌
系列文
Git 起來!每日一招學起來10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言