使用 Git Flow 管理开发流程
我们都知道,在 git 的分支功能相对 svn 确实方便许多,而且也非常推荐使用分支来做开发。我的做法是每个项目都有 2 个分支,master 和 develop。master 分支是主分支,保证程序有一个 稳定版本,develop 则是开发用的分支,几乎所有的功能开发,bug 修复都在这个分支上,完成后 再合并回 master。
但是情况并不是这么简单。有时当我们正在开发一个功能,但程序突然出现 bug 需要及时去修复的时候,这时要切回 master 分支,并基于它创建一个 hotfix 分支。有时我们在开发一个功能时,需要停下来去开发另一个功能。而且所有这些问题都出现 的时候,发布也会成为比较棘手问题。
也就是说,git branch 功能很强大,但是没有一套模型告诉我们应该怎样在开发的时候善用 这些分支。于是有人就整理出了一套比较好的方案 A successful Git branching model ,今天我们就一起来学习下这套方案。
简单来说,他将 branch 分成 2 个主要分支和 3 个临时的辅助分支:
主要分支
- master:永远处在即将发布(production-ready) 状态
- develop:最新的开发状态
辅助分支
- feature:开发新功能的分支,基于 develop,完成后 merge 回 develop
- release:准备要发布版本的分支,用来修复 bug。基于 develop,完成后 merge 回 develop 和 master
- hotfix:修复 master 上的问题,等不及 release 版本就必须马上上线。基于 master,完成后 merge 回 master 和 develop
作者还提供了 git-flow 命令工具:
$ git flow init
接着它会问你一系列的问题,蛋定!尽量使用它的默认值就好了:
No branches exist yet. Base branches must be created now. Branch name for production releases: [master] Branch name for "next release" development: [develop] How to name your supporting branch prefixes? Feature branches? [feature/] Release branches? [release/] Hotfix branches? [hotfix/] Support branches? [support/] Version tag prefix? []
完成后当前所在分支就变成 develop。任何开发都必须从 develop 开始:
git flow feature start some_awesome_feature
完成功能开发之后:
git flow feature finish some_awesome_feature
该命令将会把 feature/some_awesome_feature
合并到 develope 分支,然后删除功能(feature)分支。
将一个 feature 分支推到远程服务器:
git flow feature publish some_awesome_feature 或者 git push origin feature/some_awesome_feature
当你的功能点都完成时(需要发布新版本了),就基于 develop 创建一个发布(release)分支,然后升级版本号并在最后发布日期前把 Bug Fix 掉吧:
$ git flow release start v0.1.0
当你在完成(finish) 一个发布分支时,它会把你所作的修改合并到 master 分支,同时合并回 develop 分支,所以,你不需要担心你的 master 分支比 develop 分支更加超前。
最后一件让 git-flow 显得威武的事情是它处理热修复(即时的 BugFix)的能力,你可以像其他分支一样地创建和完成一个热修复分支,区别是它基于 master 分支,因此你可以在产品出现问题时快速修复,然后通过 finish 命令把修改合并回 master 和 develop 分支。
git flow on github: https://github.com/nvie/gitflow
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Git 常用命令备忘
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论