(7) Git 練功坊-分支合併與刪除

分支合併 merge

branch

如上圖,當我們在新的分支(feature)做開發,同事也確認分支的內容沒問題,就可以準備將分支合併到上線版本的master上。

首先用 git chcekout master,將HEAD 切回 master分支上,輸入 git merge 分支名稱,將分支合併到master上。

branch

1
git merge 分支名稱

git merge

git

此時就完成合併了。

分支合併 rebase

除了使用merge合併外,也可用 rebase 合併

rebase

目前有 cat、dog 以及 master 這三個分支,並且切換至 cat 分支上。這時候如果下這個指令:git rebase dog
這個指令翻成白話文,大概就是「我,就是 cat 分支,我現在要重新定義我的參考基準,並且將使用 dog 分支當做我新的參考基準」的意思。
完成之後,cat 分支將會接到 dog 分支上,像這樣:

  1. 「我先拿 c68537 這個 Commit 接到 053fb2 這個 Commit 上」,因為 c68537 原本的上一層 Commit 是 e12d8e,現在要接到 053fb2 上,所以需要重新計算這個 Commit 的 SHA-1 值,重新做出一顆新的 Commit 物件 35bc96。

  2. 「我再拿 b174a5 這個 Commit 接到剛剛那個新做出來的 Commit 物件 35bc96 上」,同理,因為 b174a5 這顆 Commit 要接到新的 Commit 的原因,所以它也會重新計算 SHA-1 值,得到一個新的 Commit 物件 28a76d。

  3. 最後,原本的 cat 是指向 b174a5 這個 Commit,現在要改指向最後做出來的那顆新的 Commit 物件 28a76d。
    HEAD 還是繼續指向 cat 分支。

rebase 衝突

rebase-conflict

當rebase發生衝突時,要先手動解決衝突,如上圖選擇要保留的檔案。
處理完衝突後,輸入:

1
2
git add .  //加入索引
git rebase --continue // 完成rebase流程

刪除分支

既然feature分支的內容已經順利地合併到master分支了,現在我們可以將其刪除。

欲刪除分支,請執行branch -d 命令。

1
git branch -d <分支名稱>

執行 git branch -d feature 就可以將 feature 分支刪除囉。

feature分支被刪除了,可以用”git branch”命令來確認分支是否已被刪除。

1
2
$ git branch
* master