分支合併(非快轉模式)
在介紹下個合併方法前,如果你不會用 Vim 編輯器,請修改自己慣用的編輯器。因為合併過程中,會跳出編輯器填寫 commit 訊息。
設定編輯器指令
- VSCode:
git config --global core.editor "code --wait" - Sublime Text 3
- Mac:
git config --global core.editor "/Applications/Sublime\ Text.app/Contents/MacOS/Sublime\ Text" - Win:
git config --global core.editor "'c:/program files/sublime text 3/sublime_text.exe' -w"
- Mac:
Git 合併(不觸發快轉模式)
在何時 Git 合併不會觸發快轉模式呢?我們再來回顧下。

當你的 HEAD 位置是某個要被 merge branch(dev) 上的初始 commit,就會觸發快轉模式。
所以如果我 master 新增一個 commit 的話,就不會觸發快轉模式,如下圖。

這張圖發生什麼事了呢?以下為時間順序流程:
- 當
master推到c2時,開了dev分支 - checkout 到
dev後,新增兩個 commit - 接著 checkout 到
master,新增一個 commit
所以在此時 master 的位置就不是在 c2 上,而是在 c5,因此就不會觸發 快轉模式
嘗試 merge 合併
接下來我們就試著輸入 git merge dev,看看有何變化,此時如果你兩個分支沒有改到同一行 CODE 造成衝突,他會跳出你前面設定的編輯器,上頭會寫「預設合併訊息」。假使訊息沒問題,儲存關閉後,就會合併成功,

由於沒有觸發快轉,所以分支合併時,會額外產生出一個 commit,也就是 c6。

也附上 Git 範例檔,讓您練習 Git 合併。
常見問答
Q:那這樣 master 的 commit 會有幾個?
A:6 個,因為合併 dev 後,master 也擁有那些 commit 紀錄,你可以用 git log 查詢驗證。
Q:那 dev 此時有 c5、c6 的資料嗎?
A:不會有,dev 只會有 c1 到 c4 的資料。
Q:假使我希望 dev 也可以擁有 master 的 c5、c6 資料呢?
A:那就 checkout 到 dev 後,下 git merge master 就可以。
小結
以上兩節就是 Git 中常見的合併狀態,也就是快轉與非快轉模式,在後面則是會藉由影片教學,讓您更深入了解 Git 分支,我們下節見。