ㄧ. 什麼是分支 branch
在開發軟體時,可能同時會有多人在開發同一功能或修復錯誤,也可能會有多個發佈版本的存在,並且需要針對每個版本進行維護。為了能支援同時進行數個功能的增加或版本控制,Git 具備了分支的功能。
二. 分支 branch 基礎操作
1. 建立分支
$ git branch <Name>
2. 切換指定分支
$ git checkout <Name>
$ git checkout -b <Name> # 同時建立且切換分支
3. 查看目前所有本地分支
$ git branch # 查看本地所有分支
$ git branch -a # 查看所有分支(含遠端分支)
4. 刪除指定分支
$ git branch -d <name>
三. 分支 branch 合併操作
1. merge 篇
在使用 merge 合併分支的時候,git 預設會以 fast-forward 的模式進行,那什麼是 fast-forward 和 no-fast-forward 呢?我們來看以下的動圖範例:
▍fast-forward
# 先切換到主分支
$ git checkout master
# 使用 fast-forward
$ git merge <branch>
▍no-fast-forward
# 先切換到主分支
$ git checkout master
# 使用 no-fast-forward
$ git merge <branch> --no-ff
可以很清楚的看到同樣都是 merge,使用 no-fast-forward 的模式,會長出小耳朵,可以讓成員在日後很清楚辨識不同的 commit 歷程所包含的功能有哪些,但是過多的小耳朵反而會造成混亂,所以就會需要 fast-forward 用來 merge 些較不重要的 commit,像是零碎的 bug fix,保持 git commit 的乾淨。
2. rebase 篇
▍功能一:合併版本
Rebase 是 “Re-” 與 “Base” 的複合字,這裡的 “Base” 代表「基礎版本」的意思,表示你想要重新修改特定分支的「基礎版本」,把另外一個分支的變更,當成我這個分支的基礎。
# 切換至 branch1 分支:
git checkout branch1
# 然後執行 Rebase 動作,把 master 當成我們的基礎版本:
git rebase master
▍功能二:修改歷史 commit 紀錄
除上述功能外,rebase 還能用來修改特定分支線上任何一個版本的版本資訊
$ git rebase -i HEAD~3
使用 rebase 之前,一定要先問問自己「有沒有人也在使用這個分支」,如果有的話,請非常小心使用,因為 rebase 會改變歷史紀錄。
關於更詳細的 rebase -i 操作可以參考此篇:修正 commit 過的版本歷史紀錄 Part 5
四. 使用 merge 與 rebase 時機
如果 branch 是私有分支,rebase 可以有效幫你「重整版本」來保持 commit 紀錄是呈線性整齊,而如果是共有分支則使用 merge fast-forward 或 merge no–fast-forward,來避免修改到同事的歷史紀錄。
最後~
▍回顧本篇我們介紹了的內容:
- 什麼是分支 branch
- 分支 branch 基礎操作
- 分支 branch 合併操作
- merge 篇
- rebase 篇
- 使用 merge 與 rebase 時機
Git 相關延伸閱讀:
- [Git教學] 初心者懶人包 Git 入門
- [Git教學] 寫給 Git 初學者的入門 4 步驟
- [Git教學] 分支合併: merge 與 rebase 差異
- [Git教學] Git 時光機回復版本的 2 種方法 reset & checkout
- [Git教學] 如何設定 Git 快捷鍵指令
其他相關延伸閱讀:
- Visual Studio Code 必備的 5 個擴充和小常識
- [Python教學] 使用 pyenv 和 virtualenv 打造 Python 環境配置
- [Python教學] pip install 指令大全
- [Python教學] 寫給新手的 Python 入門基礎操作
那 [Git教學] 分支合併: merge 與 rebase 差異 就到這邊,感謝收看,有關 Max 行銷誌的最新文章,都會發佈在 Max 的 Facebook 粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!