Git指南-Git-flow开发流程

Git-flow简介

简单来讲,git-flow 就是在 git branch git tag基础上封装出来的代码分支管理模型,把实际开发模拟成 master develop feature release hotfix support 几种场景,其中 master 对应发布上线,develop 对应开发,其余几个在不一样的状况下出现。经过封装,git-flow 屏蔽了 git branch 等相对来讲比较复杂生硬的命令(git branch 仍是比较复杂的,尤为是在多分支状况下),简单并且规范的解决了代码分支管理问题。html

咱们都知道, 在 git 的分支功能相对 svn 确实方便许多,并且也很是推荐使用分支来作开发. 个人作法是每一个项目都有2个分支, master 和 develop. master 分支是主分支, 保证程序有一个 稳定版本, develop 则是开发用的分支, 几乎全部的功能开发, bug 修复都在这个分支上, 完成后 再合并回 master.git

可是状况并非这么简单. 有时当咱们正在开发一个功能, 但程序忽然出现 bug 须要及时去修复的时候, 这时要切回 master 分支, 并基于它建立一个 hotfix 分支. 有时咱们在开发一个功能时, 须要停下来去开发另外一个功能. 并且全部这些问题都出现 的时候, 发布也会成为比较棘手问题.github

也就是说, git branch 功能很强大,可是没有一套模型告诉咱们应该怎样在开发的时候善用 这些分支。因而有人就整理出了一套比较好的方案 A successful Git branching model, 今天咱们就一块儿来学习下这套方案.服务器

简单来讲, 他将 branch 分红2个主要分支和3个临时的辅助分支:svn

主要分支

  • master: 永远处在即将发布(production-ready)状态工具

  • develop: 最新的开发状态post

辅助分支

  • feature: 开发新功能的分支, 基于 develop, 完成后 merge 回 develop学习

  • release: 准备要发布版本的分支, 用来修复 bug. 基于 develop, 完成后 merge 回 develop 和 mastercode

  • hotfix: 修复 master 上的问题, 等不及 release 版本就必须立刻上线. 基于 master, 完成后 merge 回 master 和 develophtm

做者还提供了 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 里面更加生动的解释了怎样去操做!

相关文章
相关标签/搜索