產品開發中的一種Git分支工作方法
一、前言
Git作為版本控制管理工具中的優秀代表,其分支管理功能使得團隊協同開發成為一件非常簡單的事情。本文介紹一種產品開發中的Git分支工作方法,以供探討。
二、產品的軟件版本號定義
軟件版本號定義,分四項:主版本號.子版本號.修訂號.Build號,如:V1.3.2.123軟件hotfix版本號定義,分四項:主版本號.子版本號.修訂號.修補號,如:V1.3.2.125
版本號 | 說明 | 備注 |
主版本號 | 系統業務重構或架構重構時增加;重大功能或方向改變時增加;大范圍不兼容之前的接口時增加。 | |
子版本號 | 增加新的業務功能時增加。 | |
修訂號 | 有改動就增加。 | 從0開始 |
修補號 | hostfix版本號基于所修復的版本的Build號,取發布版本的最大的Build號往上增加如果修復基于V1.3.2.1,則hotfix版本為V1.3.2.2如果當前發布版本的Build版本是V1.3.2.101,當前最大Build號為105,則修補版本號為V1.3.2.106 | 從1開始 |
Build號 | 編譯號,有編譯就增加。 | 從1開始 |
三、Git分支命名
1.基本分支
分支命名 | 說明 | 生命周期 |
master | 記錄上線版本的迭代,該分支代碼與線上代碼是完全一致的主分支 | 項目存在期間存續,項目下線之后歸檔 |
dev | 記錄開發代碼活動歷史 | 同master |
test | 記錄測試活動歷史 | 同master |
feature-(ver)-(name) | 屬于開發個人的代碼活動歷史記錄,如David正在開發1.0.1版本,則分支名為:feature-v1.0.1-david | 版本開始開發至版本發布,版本發布后結束 |
2.擴展分支
分支命名 | 說明 | 生命周期 |
hostfix-(ver) | 線上版本的緊急修復代碼分支,開發與測試都采用同一分支 | 版本開始開發至版本發布 |
dev-(company) | 記錄針對特定需求的定制化版本的開發代碼活動歷史 | 項目存在期間存續,項目下線之后歸檔 |
test-(company) | 記錄針對特定需求的定制化版本的測試代碼活動歷史 | 同dev-(company) |
feature-(company)-v1.0.2-(name) | 屬于開發個人的定制化版本的開發代碼活動歷史記錄,如David正在開發的定制化阿里公司的1.0.1版本,則分支名為:feature-ali-v1.0.1-david | 版本開始開發至版本發布,版本發布后結束 |
dev-v1.0.2 | 多分支并發開發時,記錄特定版本的開發代碼活動歷史 | 版本開始開發至版本發布 |
test-v1.0.2 | 多分支并發開發時,記錄特定版本的測試代碼活動歷史 | 版本開始開發至版本發布 |
3、tags
tag命名 | 說明 | 生命周期 |
tag-v(ver) | 僅針對發布版本打tag,如:tag-v1.0.0.1 | 項目存在期間存續,項目下線之后歸檔 |
四、Git分支工作規范
1.分支工作基本原則
master:系統版本的準線,版本通過測試并處于可發布狀態時,才可合并入master,一直維持可構建狀態。
dev*:協同開發分支,不可直接提交,僅可通過其他分支合并進入。
test*:測試分支,不可直接提交,僅可通過dev*分支合并進入。
feature*:個人開發分支,個人開發完成需要合并入dev分之前,先push至遠程feature分支。
2.一般項目開發
工作流程如上圖:
- 項目負責人從master的基線check out,初始化dev分支;
- 開發者從dev分支check out,建立本地個人開發分支feature*;
- 開發者完成功能開發后,commit個人feature*分支,并push至遠程個人feature*分支;
- 開發者在gitlab上提交個人的代碼和并請求至dev分支;
- 代碼審查人負責代碼審查,合并合理代碼;
- 代碼提測時,開發負責人提交dev分支到test的合并請求;
- 項目負責人合并dev分支至test分支;
- 版本測試完成后,開發負責人提交test分支至master分支的合并請求;
- 項目負責人合并代碼至master;
- 項目負責人以當前代碼為基線,在master分支上tag當前版本號。
3.hostfix版本開發
hostfix為緊急修復的版本,不同于正常需求的版本流程。工作流程如下圖。
4.定制化版本開發
定制化版本出現在給某些特定用戶提供特殊定制的功能,而又與主干分支存在不同業務邏輯的情況下。工作流程如下圖。
5.多版本并行
版本測試的時候,可能存在開發團隊眼巴巴等待測試反饋bug的時候。配合默契的多版本并行開發,可以合理利用時間,加速版本迭代。工作流程如下圖。