Gitflow存在兩個記錄專案歷史的分支
- Master分支:儲存(官方的,正式的)專案釋出歷史記錄的分支。
- develop分支:充當功能的整合分支。
Develop分支將包含專案的完整歷史記錄,而master將包含簡化版本。現在,其他開發人員應該克隆中央儲存庫,併為develop建立跟蹤分支。
⚠️:基於Master分支建立develop分支。
特性分支(feature branch)
每個新功能應駐留在其自己的(特性)分支中,可以將其推送到中央儲存庫以進行備份/協作。但是,特性(feature)分支不是基於master分支建立,而是將develop分支作為自己的父分支。功能完成後,它會重新合併到develop分支中,並刪除當前的feature分支。feature分支絕不能直接與master分支進行互動。
⚠️:通常我們基於最新的develop分支建立feature分支。
Release分支
一旦develop分支獲得了足夠的釋出功能(或臨近預定的釋出日期),你就需要基於develop分支建立release分支,建立此分支將開始下一個發行週期,因此此刻之後release分支不能新增任何新功能-除了錯誤修復,文件生成以及其他面向發行版的任務的改動。一旦準備好釋出,release分支將合併到master分支並用版本號標記。另外,應該將其合併回develop分支,因為release分支可能已經存在新的提交。
使用專用的分支進行釋出可以讓我們在釋出的同時,其他團隊可以繼續為下個發行版本開發新功能,而不影響此次釋出。它還建立了明確定義的開發階段(例如,可以很容易地說:“本週我們正在為版本4.0做準備,並且可以在儲存庫的結構中實際看到它“)。
一旦release分支準備好釋出,它將被合併到master和develop分支中,然後release分支將被刪除。重新合併到develop分支中很重要,因為關鍵更新可能已新增到release分支,並且新功能需要訪問這些更新。如果您的組織強調code review,那麼這將是合併到develop的理想場景。
⚠️:release分支基於develop分支。
hotfix分支
維護或“hotfix”分支用於快速修補生產版本。hotfix分支與release分支和feature分支很像,只是hotfix分支是基於主版本而不是開發版本的。
hotfix是唯一應直接從master建立的分支
修復程式完成後,應將其合併到master和develop(或當前release分支)中,隨後刪除hotfix分支,並應使用更新的版本號(tag)標記master分支。
擁有專門的錯誤修復開發線,您的團隊可以在不中斷其餘工作流程或不等待下一個釋出週期的情況下解決問題。您可以將hotfix分支視為直接與master一起使用的臨時發行分支。
Gitflow的總體流程為:
- A
develop
branch is created frommaster
- A
release
branch is created fromdevelop
Feature
branches are created fromdevelop
- When a
feature
is complete it is merged into thedevelop
branch - When the
release
branch is done it is merged intodevelop
andmaster
- If an issue in
master
is detected ahotfix
branch is created frommaster
- Once the
hotfix
is complete it is merged to bothdevelop
andmaster
總結
本文介紹了gitflow的工作流程
關注筆者公眾號,推送各類原創/優質技術文章 ⬇️