Git Flow 概念
在使用Git的过程中如果没有清晰流程和规划,否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。
Git Flow 的常用分支
- Production 分支
也就是我们经常使用的Master分支,这个分支最近发布到生产环境的代码,最近发布的Release, 这个分支只能从其他分支合并,不能在这个分支直接修改
- Develop 分支
这个分支是我们是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支
- Feature 分支
这个分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release
- Release分支
当你需要一个发布一个新Release的时候,我们基于Develop分支创建一个Release分支,完成Release后,我们合并到Master和Develop分支
- Hotfix分支
当我们在Production发现新的Bug时候,我们需要创建一个Hotfix, 完成Hotfix后,我们合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release
Git Flow 如何使用
- Master/Devlop 分支
所有在Master分支上的Commit应该打上Tag,一般情况下Master不存在Commit,Devlop分支基于Master分支创建
- Feature 分支
Feature分支做完后,必须合并回Develop分支, 合并完分支后一般会删点这个Feature分支,毕竟保留下来意义也不大。
- Hotfix 分支
hotfix分支基于Master分支创建,开发完后需要合并回Master和Develop分支,同时在Master上打一个tag。
Git Flow 命令示例
初始化
该命令会引导你进行一些基本配置,如选择主分支(通常是master
)、开发分支(通常是develop
)等。
git flow init
Feature
# 新建feaeure分支
git flow feature start MYFEATURE
# 发布新特性
git flow feature publish MYFEATURE
# 完成feaeure
git flow feature finish MYFEATURE
# 取得一个发布的新特性分支
git flow feature pull origin MYFEATURE
# 跟踪在origin上的特性分支
git flow feature track MYFEATURE
Release
# 开始创建一个 release 分支
# 你可以选择提供一个 [BASE] 参数,即提交记录的 sha-1 hash 值,来开启动 release 分支. 这个提交记录的 sha-1 hash 值必须是'develop' 分支下的。
git flow release start RELEASE [BASE]
# 发布 Release
git flow release publish <RELEASE-NAME>
# 完成 release 版本
git flow release finish <RELEASE-NAME>
# 签出 release 版本的远程变更
git flow release track <RELEASE-NAME>
# 删除 Release 版本
git flow release delete <RELEASE-NAME>
# 打上tag
git tag -a v0.1.0 RELEAS
git push --tags
使用示例
# 初始化 Git Flow
git flow init
# 开始一个新的 release 分支
# 从develop分支创建一个新的发布分支,假设发布版本为v1.0.0,命令如下:
git checkout develop
git flow release start v1.0.0
# 如果想基于特定的提交或分支创建发布分支,可指定BASE,例如
git flow release start v1.0.0 develop
git flow release start v1.0.0 <commit_hash>
# 在Release分支进行操作
# 在发布分支上,可以进行一些发布前的准备工作,如更新版本号、进行最后的测试、修复小 bug 等。
# 将 release 分支合并到 master 分支
# 该命令会自动将release/v1.0.0分支合并到master分支,并为master分支上的这次提交打一个版本标签v1.0.0。
git flow release finish v1.0.0
# 推送远程
git push origin master
git push origin develop
# 推送Tags
git push --tags
Hotfix
# 开始 git flow 紧急修复
git flow hotfix start VERSION [BASENAME]
# 完成紧急修复
git flow hotfix finish VERSION
使用建议
如果你的代码没有清晰流程和规划,那么强烈推荐使用Vincent Driessen 提出的GIt flow
让你的代码管理骚起来。
文章评论