在使用Git的过程中如果没有清晰流程和规划,否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。Git版本管理同样需要一个清晰的流程和规范。业内普遍采用的git 工作流程就是git flow,使得团队协作效率大大提高
下面是git flow的工作流程图:
Master分支是仓库的主分支,也有人叫Production分支,这个分支包含最近发布到生产环境的代码,最近发布的Release, 这个分支只能从其他分支合并,不能在这个分支直接修改
当我们在生产环境发现新的Bug时候,我们需要基于master分支创建一个Hotfix分支,然后在Hotfix分支上修复bug,完成Hotfix后,我们要把hotfix分支合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release
当你需要发布一个新功能的时候,要基于Develop分支创建一个Release分支,在Release分支测试并修复bug,完成release后,把release合并到master和develop分支
这个分支是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支
feature分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release
接下来我们讲下git flow的具体使用细节:
当我们新建git仓库之后,默认会创建一个主分支也就是master分支,由于master分支是用于发布生产环境,所有必须保证master上代码的稳定性,所以我们不能直接在master分支上修改提交。我们要基于master分支创建一个develop分支,develop分支用于保存开发好的相对稳定的功能,master分支和develop分支是仓库的常驻分支,一直会保留在仓库中
当新的开发任务来了之后,就要编写代码了,我们尽量不要在develop分支上写代码,要保证develop分支的相对稳定,所以这时我要就要基于develop 分支创建一个临时的开发分支,然后在开发分支上编写代码,等功能开发完之后我们再把开发分支合并到develop上
新功能合并到develop分支之后,我们想把新功能发布到生产环境,首先基于develop分支创建release分支,然后在release分支测试完成之后,把release分别合并到master分支和develop分支
release分支合并到master分支之后,在master分支上打标签用于发布:
我们把代码发布到了生产环境,用户在使用的时候给我们反馈了一个bug,这时我们需要基于master分支创建一个hotfix 分支,用于修复bug,bug修好之后,把hotfix 分支分别合并到master分支和develop分支
Git flow工具
如果你理解了上面的流程,你完全可以不使用Git flow工具,但是如果你想更标准化的执行git flow,可以尝试使用git flow工具
安装SourceTree
初始化 Git flow
点击右上角的 “Git 工作流” ,初次会提示我们 “使用 Git Flow 来初始化此仓库”,已经帮助我们预定义好了一些配置,我们只需要点击 “确定” 按钮即可
点击“确定”按钮后,我们会发现 SourceTree 为我们自动创建了 develop 分支,并且切换到了 develop 分支。
Git flow: 建立新功能
继续点击右上角的 “Git 工作流” ,这次会提示我们选择具体的下一个流程动作,这里我们演示一个 “建立新的功能” 流程。
点击 “建议新的功能” ,会让我们对即将要开发的功能进行命名(名称请使用英文),这里我们输入 simple-git-flow,点击确定按钮,会自动帮助我们创建 feature/simple-git-flow 分支,并切换到该分支上。
同时我们也能看到 SourceTree 帮助我们执行了什么命令来达到这样的效果。
已经自动切换到feature/simple-git-flow 分支。
提交代码
此时我们可以在分支上开发我们的新功能,可以在分支上管理代码,而不影响到其他同事的开发工作。
为了简单演示,我们修改下 readme.md 的内容如下:
在 SourceTree 界面,我们需要在 未暂存文件 区域选中 readme.md 并点击 暂存所选 按钮,此时 readme.md 文件会进入到 已暂存文件 区域。只有 已暂存文件 的文件会进行 提交操作 。
在下方的空白区域输入本次提交的说明:a simple git flow 后点击提交按钮,就会提交源码。
如下图所示:可以看到刚刚提交的代码记录
完成新功能开发
经过不断的代码完善,并且经过单元测试后,代码已经完成后,此时就可以完成 新功能的开发,继续点击Git 工作流
点击 “完成功能”,默认会如下图所示,在正常的开发流程下,我们不需要更改任何设置,直接点击确定即可。
SourceTree 展示所执行的命令及结果。
完成后,我们会发现 feature/simple-git-flow 分支已经不见了,同时在 develop 分支上多了一个a simple git flow的提交信息。
至此整个 “建议新功能” 的 git flow 流程就完毕了。