1. 什么是git flow
如下图
2. Git Flow常用分支说明
2.1 Production分支
就是我们经常使用的Master分支,这个分支就是生产环境运行的代码,也是最近发布的Release,这个分支只能从其它分支合并,不能在这个分支上直接进行修改
2.2 Develop分支
这个分支是我们的主开发分支,包含所有要发布到下一个Release的代码,这个分支主要是其它的功能开发分支合并到该分支,比如Feature分支
2.3 Feature分支
这个分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release
2.4 Release分支
当你需要发布一个新的Release的时候,我们基于Develop分支创建一个Release分支,然后将其合并到Master和Develop分支
2.5 Hotfix分支
当生产环境(线上)发现新的bug时,我们需要创建一个Hotfix分支,完成bug修复后,我们将其合并回Master和Develop分支,这样Hotfix的改动会进入下一个Release
3. 如何应用Git Flow
3.1 Master/Devlop 分支
- Master主干分支
(1)所有在Master分支上的Commit应该打上Tag,一般情况下Master不存在Commit
(2)不可删除 - Develop主开发分支
(1)Devlop分支基于Master分支创建
(2)不可删除 - master和develop并行
- master上始终是最稳定的代码,develop是正在开发的代码
- 生命周期:一直延续
3.2 Feature分支(功能开发)
- 创建:Feature分支基于Develop分支创建
- 命名:feature-**
- 注意:Feature分支做完相关功能后,必须合并回Develop分支
- 生命周期:有限。合并完分支后一般会删点这个Feature分支,毕竟保留下来意义也不大。
3.3 Release分支(预发布)
- 创建:Release分支基于Develop分支创建
- 用途:打完Release分支之后,我们可以在这个Release分支上测试,修改Bug等。同时,其它开发人员可以基于Develop分支新建Feature (记住:一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支)
- 注意:发布Release分支时,合并Release到Master和Develop, 同时在Master分支上打个Tag记住Release版本号,然后可以删除Release分支了。
- 生命周期:有限
3.4 Hotfix分支(bug修复)
- 创建:hotfix分支基于Master分支创建
- 注意:开发完后需要合并回Master和Develop分支,同时在Master上打一个tag
- 生命周期:有限。改完bug,即可删除
4. git flow命令示例
4.1 创建Develop
git branch develop
git push -u origin develop
4.2 开始Feature
# 通过develop新建feaeure分支
git checkout -b feature develop
# 或者, 推送至远程服务器:
git push -u origin feature
# 修改md文件
git status
git add .
git commit
4.3 完成Feature
git pull origin develop
git checkout develop
#--no-ff:不使用fast-forward方式合并,保留分支的commit历史
#--squash:使用squash方式合并,把多次分支commit历史压缩为一次
git merge --no-ff feature
git push origin develop
git branch -d some-feature
# 如果需要删除远程feature分支:
git push origin --delete feature
4.4 开始Release
git checkout -b release-0.1.0 develop
4.5 完成Release
git checkout master
git merge --no-ff release-0.1.0
git push
git checkout develop
git merge --no-ff release-0.1.0
git push
git branch -d release-0.1.0
git push origin --delete release-0.1.0
# 合并master/devlop分支之后,打上tag
git tag -a v0.1.0 master
git push --tags
4.6 开始Hotfix
git checkout -b hotfix-0.1.1 master
4.7 完成Hotfix
git checkout master
git merge --no-ff hotfix-0.1.1
git push
git checkout develop
git merge --no-ff hotfix-0.1.1
git push
git branch -d hotfix-0.1.1
git push origin --delete hotfix-0.1.1
git tag -a v0.1.1 master
git push --tags
5. 附录
参考: