前一篇介紹了 git相關的概念,我們可以檢視檔案的狀態,在各個狀態之間進行切換,可以建立和合併分支,通過rebase還可以整理自己的提交歷史。通過這些命令和操作,就可完成工作流規範規定的操作流程了。
本篇介紹具體的規範,包括分支的劃分和命名規範,不同型別的分支應對不同的場景,然後會介紹下工作流工具git-flow,如何簡化我們的操作。
分支構成
master和develop分支一直存在,且名稱不會變化,一般不直接修改這2個分支,由其他分支合併而來。
feature、release、hotfix分別用於功能點開發、優化,特定版本測試,線上問題緊急處理,同一型別的分支會產生多個。
分支劃分如下:
命名規範約定如下:
比如有乙個「優化分布式session」的需求,可在develop分支的基礎上建立新分支 feature/optimize_distributed_session進行開發,開發完成後合併到develop分支。
分支詳細介紹和處理流程
master分支
主分支,與線上執行的版本始終保持一致,任何時候都不要直接修改master分支。
乙個版本的release分支、hotfix分支開發完成後,會合併**到master分支,也就是說master分支主要**於release分支和hotfix分支。
develop分支
開發分支,始終保持最新完成以及bug修復後的**,新增功能時基於該分支建立feature分支。
乙個版本的release分支、hotfix分支開發完成後,也會合併到develop分支,另外,乙個版本的feature功能開發完成後,也會合併到develop分支。也就是說develop分支**於feature、release、hotfix分支。
feature分支
開發新功能或優化現有功能時,會建立feature分支,以develop為基礎建立。一般會有多個功能同時開發,但上線時間可能不同,在適當的時候將特定的feature分支合併到develop分支,並建立release分支,進入測試狀態。
release分支
當一組feature開發完成,會首先合併到develop分支,開始進入提測階段時,會建立release分支。
以release分支**為基準提測,測試過程中若存在bug需要修復,則直接由開發者在release分支修復並提交。
測試完成之後,合併release分支到master和develop分支,此時master為最新**,用作上線。
hotfix分支
線上出現緊急問題時,需要及時修復,以master分支為基線,建立hotfix分支,修復完成後,需要合併到master分支和develop分支。
特殊情況處理和注意點
develop分支已存在未上線的feature**, 此時需要緊急上線乙個新功能, 但develop的**不能上,如何處理 ?
以develop為基線,建立了f1和f2兩個feature分支之後, f1,f2開發一半的時候,發現兩個分支**需要有依賴怎麼辦 ?
一定要保證commit歷史記錄的整潔,**合併時,根據情況選擇merge或rebase;
使用rebase注意,一旦分支中的提交物件發布到公共倉庫,就千萬不要對該分支進行衍合操作;
提交說明規範:
git-flow工具
上面的流程在第一次接觸時,會覺得有點複雜,通過git-flow工具可以把這些流程自動化。它是乙個命令列工具,支援各個平台,比如osx、linux、windows等支援。
初始化通過 git flow init 命令進行初始化,以互動式的方式進行,主要是約定分支的命名,建議使用預設值;
開發新功能
git flow feature start f1 新增新特性,這個操作建立了乙個基於develop的特性分支,並切換到這個分支之下。
git flow feature finish f1 完成新特性,這個操作會合併f1分支到develop分支,並刪除特性分支,切換回develop分支。
git flow feature publish f1 發布新分支,發布新特性分支到遠端伺服器,其它使用者也可以使用這分支。
發布版本
git flow release start r1 [base] 建立發布版本,[base]是以哪個分支或commit為基礎進行發版,一般為develop。
git flow release publish r1 發布release分支,其他同事就可以看到這個分支,並修改一些小問題。
git flow release finish r1 完成release分支,會合併release分支到master分支,用release分支名打tag,合併release分支到 develop分支,最後移除release分支。
修復線上問題
有可能需要修正 master 分支上某個 tag 標記的生產版本。
git flow hotfix start version [basename] 建立hotfix分支,version 引數標記著修正版本,[basename]為finish release時填寫的版本號。
git flow hotfix finish version,當完成緊急修復分支,**合併到develop和 master分支。相應地,master分支打上修正版本的 tag。
git分支管理和工作流規範 基本概念說明
單點登入與許可權管理 系列第二部分,demo專案的設計和開發,需要一段時間才能完成。這段時間,會把以前學習 實踐 梳理過的知識分享給大家,希望大家能夠喜歡。針對不同的場景建立不同的分支,始終保持主分支可靠 乾淨,比如新增功能 修復線上問題 修復測試環境的bug等場景,需要建立不同的分支。另外,要對下...
工作流規範
工作流規範 wf xml工作流管理聯盟 workflow management coalition,wfmc 中的 wf xml 和工作流參考模型 workflow reference model wf xml 是一種基於 xml 的工作流互操作性資訊的編碼。工作流參考模型是一種底層工作流系統體系結...
工作流規範
工作流規範 wf xml 工作流管理聯盟 workflow management coalition wfmc 中的wf xml 和工作流參考模型 workflow reference model wf xml 是一種基於 xml 的工作流互操作性資訊的編碼。工作流參考模型是一種底層工作流系統體系結...