Git + GitHub 版本控制教學 (2) - 分支 Branch

Git 中最主要的一項武器就是分支 Branch 的功能了。我們可以藉由開多個分支,同時開發不同的功能並且互不影響。在最開始的時候我們會有一個主要分支叫做 master or main(開始是 master,由於這個字帶一點歧視的味道所以慢慢開始用main 來代替),要做新的功能又不想影響主線的時候,我們就可以開新的分支。

實際的例子:假如你今天在開發一個新功能開發到一半,突然發現線上的版本有個 bug 要緊急修復,那你就可以開新的分支來處理 bug,這樣就不會影響到正在開發的功能。

branch

分支 Branch 的基本用法

1. 查看現有的分支可以用 git branch

git branch

如圖所示,目前這個 project 一共有 5 個分支(如果第一次使用分支的話只會看到一個分支: master or main)。星號且 hightlight 綠色的 bugfix1 是目前所在的分支。

2. 切換分支 git checkout [branch name]

譬如說我想要切換到 feature1 的話,可以下 git checkout feature1

git checkout [branch name]

3. 新增分支 git branch [new branch name] 或是 git checkout -b [new branch name]

git checkout -b [new branch name]

如果使用 git branch [new branch name] ,它會存粹地幫你開一個新的 branch。如果用 git checkout -b ,則會新增並且切換到新的 branch。這個新的 branch 是基於你當下的 branch 製造出來的,會是一模一樣。也可以使用 git checkout -b [new branch name] [existing branch name] ,git 會基於 existing branch name 去做新的 branch。

4. 刪除分支 git branch -d [branch name]

git branch -d [branch name]

刪除分支的時候有幾點要注意:假設要刪除 bugfix1 這個分支,那我們刪除它的時候不能在這個分支裡面,必須要先切到其他分支(很合理吧..)。另一點要注意的是 -d 有時候會失敗,這是因為 git 有個保護機制,如果這個分支還沒有被合進主分支或遠端分支裡,它就會不讓刪。如果你無論無何都想要刪,可以用 git branch -D [branch name] 大寫 D 去刪。

git 的指令有很多種,branch 相關的指令我相信最常用的就是上面列的這些。一些其他功能譬如改名: git branch -m 等等,想要用的時候再去找文檔或著 google 一下就行了。

分久必合

有開分支當然也就需要合併,git 的合併也是有點學問的。合併的方式主要有 git mergegit rebase 兩種流派。初來乍到可以先使用最直觀的 git merge ,兩種各有其特色。我們接下來會來探討 git merge 要怎麼用,以及遇到衝突怎麼處理。

Git + GitHub 版本控制教學 (3) - 合併 merge 與 rebase
我們在不同的分支上開發新功能、解決 bug ,任務完成後就需要把功能合併回主分支。合併分支的方式主要有兩種:merge 與 rebase 。merge 的特點是不改變過去 commit 的歷史,而 rebase 會在合併的當下重新改寫過去 commit 的紀錄。