之前文章對git的日常操作做了簡單的總結(jié),本篇主要對gitflow進行說明和總結(jié)稳捆。
Git
- 分布式的版本管理, 本地倉庫包含了遠程倉庫的所有內(nèi)容 . 安全性高 , 遠程倉庫文件丟失了也不怕
- 優(yōu)秀的分支模型 , 創(chuàng)建/合并分支非常的方便
- git是開源的,它強調(diào)個體憋槐,并且對于公共服務器壓力不會太大角钩,大小項目均可管理
GitFlow的常用分支管理
- master
- 主分支 , 產(chǎn)品的功能全部實現(xiàn)后 , 最終在master分支對外發(fā)布
- 該分支為只讀唯一分支 , 只能從其他分支(release/hotfix)合并 , 不能在此分支修改
- 另外所有在master分支的推送應該打標簽做記錄,方便追溯
- 例如release合并到master , 或hotfix合并到master
- develop
- 主開發(fā)分支 , 基于master分支克隆
- 包含所有要發(fā)布到下一個release的代碼
- 該分支為只讀唯一分支 , 只能從其他分支合并
- feature功能分支完成 , 合并到develop(不推送)
- develop拉取release分支 , 提測
- release/hotfix 分支上線完畢 , 合并到develop并推送
3.feature
功能開發(fā)分支 , 基于develop分支克隆 , 主要用于新需求新功能的開發(fā)
功能開發(fā)完畢后合到develop分支(未正式上線之前不推送到遠程中央倉庫!!!)
feature分支可同時存在多個 , 用于團隊中多個功能同時開發(fā) , 屬于臨時分支 , 功能完成后可選刪除
release
測試分支 , 基于feature分支合并到develop之后 , 從develop分支克隆
主要用于提交給測試人員進行功能測試 , 測試過程中發(fā)現(xiàn)的BUG在本分支進行修復 , 修復完成上線后合并到develop/master分支并推送(完成功能) , 打Tag
屬于臨時分支 , 功能上線后可選刪除
hotfix
補丁分支 , 基于master分支克隆 , 主要用于對線上的版本進行BUG修復
修復完畢后合并到develop/master分支并推送 , 打Tag
屬于臨時分支 , 補丁修復上線后可選刪除
所有hotfix分支的修改會進入到下一個release
主要工作流程
1 . 初始化項目為gitflow , 默認創(chuàng)建master分支 , 然后從master拉取第一個develop分支
2 . 從develop拉取feature分支進行編碼開發(fā)(多個開發(fā)人員拉取多個feature同時進行并行開發(fā) , 互不影響)
3 . feature分支完成后 , 合并到develop(不推送 , feature功能完成還未提測 , 推送后會影響其他功能分支的開發(fā))
合并feature到develop , 可以選擇刪除當前feature , 也可以不刪除 . 但當前feature就不可更改了 , 必須從release分支繼續(xù)編碼修改
4 . 從develop拉取release分支進行提測 , 提測過程中在release分支上修改BUG
5 . release分支上線后 , 合并release分支到develop/master并推送
合并之后 , 可選刪除當前release分支 , 若不刪除 , 則當前release不可修改 . 線上有問題也必須從master拉取hotfix分支進行修改
6 . 上線之后若發(fā)現(xiàn)線上BUG , 從master拉取hotfix進行BUG修改
7 . hotfix通過測試上線后 , 合并hotfix分支到develop/master并推送
合并之后 , 可選刪除當前hostfix , 若不刪除 , 則當前hotfix不可修改 , 若補丁未修復 , 需要從master拉取新的hotfix繼續(xù)修改
8 . 當進行一個feature時 , 若develop分支有變動 , 如其他開發(fā)人員完成功能并上線 , 則需要將完成的功能合并到自己分支上
即合并develop到當前feature分支
9 . 當進行一個release分支時 , 若develop分支有變動 , 如其他開發(fā)人員完成功能并上線 , 則需要將完成的功能合并到自己分支上
不喜歡命令行的同學 , 這里有完美支持Git Flow的圖形化工具 - SourceTree(支持中文簡體)