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的工作流程
關注筆者公衆號,推送各類原創/優質技術文章 ⬇️