一缴啡、GitFlow
Git的分支管理規(guī)范我們參考GitFlow话瞧, GitFlow是由荷蘭程序員Vincent Driessen提出的Git管理規(guī)范(A successful Git branching model)。
二芽死、GitFlow 常用分支
master
? 主分支 , 產品的功能全部實現后 , 最終在 master 分支對外發(fā)布
? 該分支為只讀唯一分支 , 只能從其他分支(release/hotfix)合并 , 不能在此分支修改
? 所有在 master 分支的推送應該打標簽做記錄,方便追溯
? 例如 release 合并到 master , 或 hotfix 合并到 master
develop
? 主開發(fā)分支 , 基于 master 分支克隆
? 該分支為只讀唯一分支 , 只能從其他分支合并
? feature 功能分支完成 , 合并到 develop
? 從 develop 創(chuàng)建 release 分支提測
? release/hotfix 分支上線完畢 , 合并到 develop 并推送
feature
? 功能開發(fā)分支 , 基于 develop 分支克隆 , 主要用于新需求新功能的開發(fā)拗秘,屬于臨時分支
? feature 分支可同時存在多個 , 用于團隊中多個功能同時開發(fā)
? 功能開發(fā)完畢并測試完成后合到 develop 分支。合并后此分支刪除(誰合并誰刪除)
release
? 從 develop 分支克隆秕脓,屬于臨時分支
? 用于提交給測試人員進行功能測試 , 測試過程中發(fā)現的 BUG 在本分支進行修復 , 修復完成上線后合并
? 合并到 develop/master 分支并推送(完成功能) , 打 Tag
? 合并完成后此分支刪除(誰合并誰刪除)
hotfix
? Bugfix 補丁分支 , 基于 master 分支克隆 , 主要用于對線上的版本進行 BUG 修復,屬于臨時分支
? 修復完畢后合并到 master 分支并推送 , 打 Tag
【注意】如不對 bug 進行臨時發(fā)版儒搭,不需要合并到 master 分支
? 合并到 develop 分支并推送
? 合并到 develop/master 后吠架,此分支刪除(誰合并誰刪除)
三、主要工作流程
GitFlow 的工作主要工作流程如下
四搂鲫、code review
code review 有條件的傍药,可以采用Gerrit 、phabricator 等三方工具魂仍,他們會有一個中心倉庫拐辽,方便code review,沒條件的可以用gitlab自帶的Merger request擦酌,在合并至develop時進行 code review
Commit Message規(guī)范
目前 AngularJS 在github上的提交規(guī)范是被業(yè)內很多人認可的俱诸,也被大家逐漸引用。同時針對這種提交格式也有成熟的工具赊舶,來根據commit的message記錄自動生成Change Log內容睁搭。所以我們也采用同樣的規(guī)范來進行約束。
AngularJS Git Commit Message規(guī)范 - Google Doc文檔需翻墻笼平。
- 格式:Commit Message包括三部分內容: header园骆,body和footer。其中header是必須的寓调,body和footer可以省略锌唾。
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
- header: header部分只有一行,包括三個字段
type
(必需)夺英、scope
(可選)和subject
(必需)晌涕。
* type:用于說明commit的類別。
* feat: 新功能(feature)
* fix:修復bug
* update: 普通的內容修改
* docs:文檔
* style:格式(不影響代碼運行的變動)
* refactor:重構(即不是新增功能秋麸,也不是修改bug的代碼變動)
* test:增加測試
* chore:構建過程或輔助工具
* scope:用于說明commit影響的范圍,比如數據層炬太、控制層灸蟆、視圖層等等,視項目不同而不同。
* subject:commit目的的簡短描述炒考。
# 新功能
feat: 輕應用離線包管理
# 修復bug
fix: 修復下載的xmind類型文件可缚,預覽識別類型不正確的問題
# 文檔更新
docs: 輕應用離線功能的文檔更新
# 重構
refactor: 優(yōu)化下載預覽
# 增加測試
test``: 下載邏輯增加單元測試
# 自動化、腳本等
chore: 修改sonar掃描的配置信息
```
-
body:對本次commit的詳細描述斋枢,可以分成多行帘靡。
More detailed explanatory text, if necessary. Wrap it to
about 72 characters or so.
Further paragraphs come after blank lines.
- Bullet points are okay, too
- Use a hanging indent
-
footer:只用于以下兩種情況
-
如果當前代碼與上一個版本不兼容,則footer部分以BREAKING CHANGE開頭瓤帚,后面是對變動的描述描姚,以及變動理由和遷移方法。
BREAKING CHANGE: isolate scope bindings definition has changed.
To migrate the code follow the example below:Before: scope: { myAttr: attribute, } After: scope: { myAttr: @, }
關閉Issue戈次,如果當前commit是針對某個issue轩勘,那么可以在footer部分關閉這個issue。
Closes #234 #445 #8888
-