什么是 git-flow?
git-flow 并不是要替代 Git,它仅仅是非常聪明有效地把标准的 Git 命令用脚本组合了起来。 严格来讲,你并不需要安装什么特别的东西就可以使用 git-flow 工作流程。你只需要了解,哪些工作流程是由哪些单独的任务所组成的,并且附带上正确的参数,以及在一个正确的顺序下简单执行那些对应的 Git 命令就可以了。当然,如果你使用 git-flow 脚本就会更加方便了,你就不需要把这些命令和顺序都记在脑子里。
在Vscode中安装 git-flow
在vs面板中打开扩展,输入关键词gitflow搜索
点击安装按钮,重新加载vs。
初始化
打开vs命令(Ctrl+Shift+P) 输入gitflow 选择 Gitflow:Initialize repository for gitflow,一路回车完成初始化
初始化后会有develop和master分支,这两个分支是长期分支:
- master:只能用来包括产品代码。你不能直接工作在这个 master 分支上,而是在其他指定的,独立的特性分支中(这方面我们会马上谈到)。不直接提交改动到 master 分支上也是很多工作流程的一个共同的规则。
develop:是你进行任何新的开发的基础分支。当你开始一个新的功能分支时,它将是_开发_的基础。另外,该分支也汇集所有已经完成的功能,并等待被整合到 master 分支中。
使用 git-flow
功能开发(Feature)
功能开发是指Coder接收到新的开发任务,负责某部分的代码,如:用户登陆(user-login)
具体操作如下:
在vs中打开命令行工具并输入
$ git flow feature start user-login
Switched to a new branch 'feature/user-login'
Summary of actions:
- A new branch 'feature/user-login' was created, based on 'develop'
- You are now on branch 'feature/user-login'
Git-flow 会创建出一个feature/user-login的分支,此功能相关的代码在此分支上完成。
Coder编码完成后,需要完成功能并合并分支,如下:
$ git flow feature finish user-login
Switched to branch 'develop'
Updating d3986e9 0cd4ef0
Fast-forward
login.html | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 login.html
Deleted branch feature/user-login (was 0cd4ef0).
执行“feature finish” 命令后会把当前分支的工作合并到主 “develop” 分支中去,并且删除当前的开发分支。
版本管理(Releases)
releases是准备要发布的版本,包含要分布的功能和bug修复,而且这些功能和bug都经过了测试。
新建releases分支
$ git flow release start 1.2.3
Switched to a new branch 'release/1.2.3'
分支要根据版本号命名:
1表示大的版本,如整体升级或增加的大的模块等
2表示的功能升级或小的功能增加
3主要代表bug修复
完成releases分支
分支版本代码合并完成并测试后,进行完成releases。
git flow release finish 1.2.3
这个命令会完成如下一系列的操作:
- 首先,git-flow 会拉取远程仓库,以确保目前是最新的版本。
- 然后,release 的内容会被合并到 “master” 和 “develop” 两个分支中去,这样不仅产品代码为最新的版本,而且新的功能分支也将基于最新代码。
- 为便于识别和做历史参考,release 会被标记上这个 release 的名字。
- 删除当前版本分支,checkout 到 “develop”。
接下来把master部署到生产环境中就可以回家休息了。
Bug修复(Hotfix)
当版本发布后用户反馈有Bug时,通过Hotfix进行Bug修复。
$ git flow hotfix start password
创建出“hotfix/password”分支,Coder修复发现的 Bug 后,完成Hotfix。
$ git flow hotfix finish password
当前分支同时被合并到 “master”和 “develop” 中,这样就可以确保这个错误不会再次出现在下一个 release 中。
接下来把Master分支部署到生产中。