Git Flow工作流程
在公司工作过程中,有接触到Git Flow,通过慢慢的熟练,发现它比git实现效果要好很多,也更规范,整理了一份git 和Git Flow的对比,分享给大家:
什么是Git Flow:
Git Flow是使用Git在团队开发时进行源代码管理的一套行为规范。它把标准的Git命令用脚本组合了起来,简化了Git操作,这些脚本命令在一个预先定义的顺序下自动执行多个操作。Gitflow工作流为不同的分支分配一个很明确的角色,并定义分支之间如何和什么时候进行交互。
Git Flow是如何简化Git操作的?
我们通过一个案例,比较在同一项目下,分别使用Git Flow和Git,实现同一效果的工作流程:
使用Git实现效果的工作流程:
1.在功能开发阶段,开发者开发项目并把代码上传到服务器需要以下步骤
1.1 项目负责人在本地master基础上创建develop分支,并推送到服务器上
$ git branch develop
$ git push -u origin develop
1.2 其他开发人员克隆develop中央仓库的源码,如果已经克隆过,不需要执行以下第一条,第二条命令会创建develop 分支,并切换到此分支
$ git clone git@10.100.21.13:datacenter/yzbizcenter-web.git
$ git checkout -b develop origin/develop
1.3 本地develop分支是主要开发分支,开发新功能时在develop分支下新建分支进行开发,开发完成后将新建的分支合并到develop
1.3.1 新建并切换到feature分支
$ git checkout -b feature/pro_changwenxia develop
1.3.2 推送到远程仓库,共享
$ git push
1.3.3 所有开发新功能的人员都在这个分支上开发提交代码
$ git status
$ git add
$ git commit -m '提交说明'
1.3.4 完成新功能开发,联调测试通过后,更新本地代码,合并 feature分支到develop并删除feature分支 ,将代码推送到服务器上
$ git pull origin develop
$ git checkout develop
$ git merge feature/pro_changwenxia
$ git push
$ git branch -d feature/pro_changwenxia
1.4 在测试环境发布develop分支中的代码
2. 线上发布
2.1 从develop分支创建准备上线的release分支,并切换到此分支
$ git checkout -b release/1.0.0 develop
2.2 推送到远程仓库中
$ git push
2.3 如果有bug, 继续修改
2.4 项目将要上线时,将release分支合并到master分支和develop分支,使用master分支上线新版本
2.4.1 将release分支合并到master分支,把代码推送到服务器上,然后打上tag标签也推送到服务器上
$ git checkout master
$ git merge release/1.0
$ git push
$ git tag -a 0.1.RELEASE -m '标签说明' master
$ git push --tags
2.4.2 将release分支合并到develop分支,推送到服务器上并删除release分支
$ git checkout develop
$ git merge release/1.0
$ git push
$ git branch -d release/1.0
2.5 线上项目紧急修复bug时,从master分支创建hotfix分支,修复完成后合并回master分支
2.5.1 基于master创建并切换到hotfix分支
$ git checkout -b hotfix/3.0.2.20190430 master
2.5.2 修复bug
2.5.3 将hotfix分支合并回master发布,把代码推送到服务器上,然后打上tag标签也推送到服务器上
$ git checkout master
$ git merge hotfix/3.0.2.20190430
$ git push
$ git tag -a 0.1.hotfix -m '标签说明' master
$ git push --tags
2.5.4 将hotfix分支合并合并到develop分支,推送到服务器上并删除hotfix分支
$ git checkout develop
$ git merge hotfix/3.0.2.20190430
$ git push
git flow工作流程:
-
新功能开发流程
初始化工作目录,(敲完命令后一直向下回车即可)
$ git flow init
在develop 分支上创建新的需求分支feature/pro_changwenxia,命令执行完后会自动切换到新分支
$ git flow feature start pro_changwenxia
更改部分代码后,提交到本地仓库
$ git commit -a -m '提交说明'
完成开发分支后先更新本地代码,下面第二条命令会把分支自动合并到develop分支然后删除这个feature分支
$ git pull origin develop
$ git flow feature finish pro_changwenxia
发布到远程开发分支develop
$ git push origin develop
-
线上发布流程
2.1 版本发布流程
从develop分支更新代码,创建准备发布的 release分支, 命令执行完后会自动切换到新分支
$ git checkout develop $ git pull $ git flow release start v1.0
更改部分代码后,提交到本地仓库
$ git commit -a -m '提交说明'
把分支自动合并到develop并删除这个release分支
$ git flow release finish v1.0 -m '标签描述'
推送到服务器上
$ git push origin develop master v1.0
2.2 线上项目紧急修复流程
从master分支创建hotfix分支,命令执行完后会自动切换到新分支
$ git flow hotfix start 3.0.2.20190430
修复代码后,分支自动合并回develop分支和master分支,然后删除这个hotfix分支
$ git flow hotfix finish 3.0.2.20190430
通过两者对比,git flow简化了git手动操作流程,开发更加高效