介绍
git 最强大的就是其分支功能,但是如何使用分支才能更有效的提高开发效率,减少因为代码合并代码的问题。需要一个分支模型来规范,在git-flow出现之前,已经有分支模型理论。你只需要了解,那些工作流程是由哪些单独的任务所组成的,并且附带上正确的参数,以及在一个正确的顺序下简单执行那些对应的git命令就可以了。在git-flow出现之后,你就不需要把这些命令和顺序都记在脑子里。git-flow将一部分操作流程简化为命令,并没有增加新的功能,只是简化了操作,
安装
目前最流行的git-flow就是avh版本的git-flow
mac
brew install git-flow-avh
使用
初始化项目
# 使用git flow init 代替git init
$ git flow init
使用git flow初始化工程目录之后,默认创建两个分支
-
master分支:保护性分支,只能用来包括产品代码,只包含经过彻底测试的稳定代码。开发人员不能直接工作在master分支上,也不能提交改动到master分支上
-
develop分支:develop分支是进行任何新开发的基础分支。当需要开发一个新功能时,需要创建feature分支,而这个feature分支必须是从develop分支分出去的。另外,该分支也汇集所有已经完成的功能,并等待被整合到master分支中。
master分支和develop分支也被称为长期分支,它们会存活在项目的整个生命周期中。而其他分支,仅仅是临时存在的,当它们完成了自己的任务之后就会被删除掉。
功能开发(feature分支)
创建feature
- feature分支:feature分支是平常开发工作中使用最频繁的分支。该分支默认从develop检出,在做功能性开发的时候,检出一个独立的分支,是版本控制中一个重要的原则
# git-flow 创建 feature 分支
$ git flow feature start <branch-name>
当你需要帮助的时候,可以随时请求帮助。例如:
$ git flow feature help
完成feature
git flow feature finish
该命令会把当前分支的代码整合到develop
分支中去,之后,git-flow会进行清理操作,删除当下完成的功能分支,将分支切换到develop
版本管理(release分支)
创建release
创建release
分支
$ git flow release start 1.1.5
Switched to a new branch 'release/1.1.5'
当你认为现在的develop
分支中的代码已经是一个成熟的release版本的时候,这意味着:首先它包括所有新的功能和必要的修复;其二,它已经被彻底的测试过了。如果上述两点都满足,那就可以创建release分支了。release分支是使用版本号命名的,这个命名方案会让git-flow在我们完成release后,适当的自动去标记那些release提交。
完成release
使用如下命令完成release分支
git flow release finish 1.1.5
该命令会完成如下一系列操作:
- 首先,git-flow会拉去远程仓库,以确保目前是最新的release版本
- 然后,release的内容会被合并到
master
分支和develop
分支,这样不仅产品分支(master分支)的代码是最新的版本,功能分支也会基于最新代码 - 最后,版本分支会被删除,并且回到
develop
分支
为了便于识别和做历史参考,release提交会被标记上这个release的名字
紧急修复(hotfix分支)
很多时候,仅仅在几个小时或几天之后,master分支中的代码可能就会出现一些问题。在这种情况下,git-flow提供了一个特定的hotfix
分支
创建hotfix
$ git flow hotfix start missing-link
这个命令会创建一个名为hotfix/missing-link
的分支。因为这是对产品代码进行修复,所以这个hotfix
分支是基于master
分支。
hotfix
分支这和release
分支最明显的区别:release
分支都是基于develop
分支的;而hotfix
分支是基于master
分支的。
完成hotfix
在把我们的修复提交到hotfix分支,并测试通过之后,就可以去结束它了:
git flow hotfix finish missing-link
该命令会完成如下一系列操作:
- 首先,完成的改动被合并到
master
分支中,同时也会合并到develop
分支中,这样就可以确保这个错误不会再次出现在下一个release
分支中 - 然后,这个
hotfix
分支将被标记起来以便参考 - 最后,这个
hotfix
分支将被删除,然后切换到develop
分支上
网友评论