Table
ㄧ. 什麼是分支 branch
在開發軟體時,可能同時會有多人在開發同一功能或修復錯誤,也可能會有多個發佈版本的存在,並且需要針對每個版本進行維護。為了能支援同時進行數個功能的增加或版本控制,Git 具備了分支的功能。
二. 分支 branch 基礎操作
1. 建立分支
1 |
$ git branch <Name> |
2. 切換指定分支
1 2 3 |
$ git checkout <Name> $ git checkout -b <Name> # 同時建立且切換分支 |
3. 查看目前所有本地分支
1 2 3 |
$ git branch # 查看本地所有分支 $ git branch -a # 查看所有分支(含遠端分支) |
4. 刪除指定分支
1 |
$ git branch -d <name> |
三. 分支 branch 合併操作
1. merge 篇
在使用 merge 合併分支的時候,git 預設會以 fast-forward 的模式進行,那什麼是 fast-forward 和 no-fast-forward 呢?我們來看以下的動圖範例:
▍fast-forward
1 2 3 4 5 |
# 先切換到主分支 $ git checkout master # 使用 fast-forward $ git merge <branch> |
▍no-fast-forward
1 2 3 4 5 |
# 先切換到主分支 $ 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” 代表「基礎版本」的意思,表示你想要重新修改特定分支的「基礎版本」,把另外一個分支的變更,當成我這個分支的基礎。
1 2 3 4 5 |
# 切換至 branch1 分支: git checkout branch1 # 然後執行 Rebase 動作,把 master 當成我們的基礎版本: git rebase master |
▍功能二:修改歷史 commit 紀錄
除上述功能外,rebase 還能用來修改特定分支線上任何一個版本的版本資訊
1 |
$ 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 粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!