主要內容
什麼是分支(branch)?
分支是為了將修改記錄的整體流程分開儲存,互不影響,所以在同一個 repo 裡可以同時進行多個不同分枝的修改。
當多人協作同一專案時,可以在主要分支(一般是 Master 分支)建立自己專用的分支,之後再將自己分支的修改內容導入主要分支中。且每個提交的歷史記錄都會被儲存,後續可以更容易找到問題所在。
Mater 分支:最初的提交後,由 Git 所建立。後續的提交在切換分支前,都會增加在 Master 分支裡。
分支的運用
在此簡介「Integration」和「Topic」兩種分支。
Integration 分支:
是穩定、少更改,可隨時建立發布版本的分支,如 master 分支。新分支會建立在它之上。Topic 分支:
為了開發功能、修復錯誤等任務所建立。Topic 分支建立在穩定的 Integration 分支之上,完成修改後,再合併到 Integration 分支。
切換分支(checkout)
Stash
Stash 是暫存檔案修改內容的區域。
還未提交的修改內容留在工作目錄,且已 checkout 到其他分支時,修改內容就會從原來的分支移動到切換後的分支。但是,若想暫存工作目錄未提交的修改,可以將修改內容放到 stash 中暫存再 checkout ,事後再取出應用到任一分支。示意圖如下:(圖片引用自連猴子都能懂的Git入門指南)
合併分支(merge)
合併分支有 2 種方法:使用「merge」或「rebase」。(以下圖片引用自連猴子都能懂的Git入門指南)
Merge:
修改內容的歷史記錄會維持原狀,但合併後的歷史紀錄變得複雜。Rebase:
修改內容的歷史記錄會接在要合併的分支後,合併後的歷史記錄相對簡單,但較容易發生衝突。
Git branching model
「A successful Git branching model」一文建議將分支分為四類,如下:
- Main:分為 master 和 develop 兩種分支。
- Master:管理發布狀態,最後的提交會有發布版本標籤。
- Develop:日常開發。所有新功能開發最終併回 develop。(似 integration 分支功用)
- Feature :亦稱 Topic ,新功能開發、修復錯誤時從 develop 分支出來。基本上不需在遠端數據庫建立分支。完成開發後併回 develop 發布。
- Release:通常分支名前加”release-“ 。即將發布前才建立, 做最後錯誤修復。 到可發布時,將 release 併回 master ,並添加 release 版本號標籤。最好也併回 develop ,確保同步到 release 最新狀態。
- Hot fix:發布的產品需緊急修改時,從 master 建立的分支。通常分支名前加”hotfix-“。修改後併回 master 及 develop 。
(以下示意圖引用自連猴子都能懂的Git入門指南)
以上是學習的一點紀錄,若想了解 Git 更詳細的內容,可以去看上面連結的教學文喔!