内容简介:最近在着手制定开发规范,想要把项目正规高效的跑起来。计划引入 Git 版本控制,Git-Flow 便成为了首选。因为之前并没有过多接触,所以先花些时间摸索一下。当在团队开发中使用版本控制系统时,商定一个统一的工作流程是至关重要的。基本套路:你可以定义一个完全适合你自己项目的工作流程,或者使用一个别人定义好的。
最近在着手制定开发规范,想要把项目正规高效的跑起来。计划引入 Git 版本控制,Git-Flow 便成为了首选。因为之前并没有过多接触,所以先花些时间摸索一下。
一、为什么使用 git-flow
当在团队开发中使用版本控制系统时,商定一个统一的工作流程是至关重要的。 Git
的确可以在各个方面做很多事情,然而,如果在你的团队中还没有能形成一个特定有效的工作流程,那么混乱就将是不可避免的。
基本套路:你可以定义一个完全适合你自己项目的工作流程,或者使用一个别人定义好的。
二、安装 git-flow
我们使用 Homebrew
来安装 git-flow
:
brew install git-flow
之后,通过 git-flow
来初始化项目:
git flow init
这时候就会有一些配置的操作,我们先默认操作:
Initialized empty Git repository in /Users/jartto/Documents/git-flow-demo/.git/ No branches exist yet. Base branches must be created now. Branch name for production releases: [master] Branch name for "next release" development: [develop] *** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (got 'jartto@bogon.(none)') fatal: Not a valid object name: 'master'. error: pathspec 'develop' did not match any file(s) known to git. How to name your supporting branch prefixes? Feature branches? [feature/] Release branches? [release/] Hotfix branches? [hotfix/] Support branches? [support/] Version tag prefix? []
需要强调一点: git-flow
只是封装了 git
的命令,所以在我们初始化的时候,对仓库并没有其他改动,只是创建了几个分支。当然,如果你不想继续使用 git-flow
,那么只需要简单的停用 git-flow
的命令即可,不需要修改或者删除任何文件。
为了验证一下,我们看下目前的分支,执行:
git branch
输出:
* develop master
很简单, develop
分支是我们日常开发的分支,会有很多改动。而 master
主要针对线上分支,下面会细说。
这里补充一点,我们可以通过 help 命令来查看用例。
git flow help
输出如下:
usage: git flow <subcommand> Available subcommands are: init Initialize a new git repo with support for the branching model. feature Manage your feature branches. release Manage your release branches. hotfix Manage your hotfix branches. support Manage your support branches. version Shows version information. Try 'git flow <subcommand> help' for details.
如果我要看 feature
相关命令呢?
git flow feature help
使用规范就会列出来:
usage: git flow feature [list] [-v] git flow feature start [-F] <name> [<base>] git flow feature finish [-rFk] <name|nameprefix> git flow feature publish <name> git flow feature track <name> git flow feature diff [<name|nameprefix>] git flow feature rebase [-i] [<name|nameprefix>] git flow feature checkout [<name|nameprefix>] git flow feature pull <remote> [<name>]
三、分支模式
git-flow
模式会预设两个主分支在仓库中:
1. master
只能用来包括产品代码。你不能直接工作在这个 master
分支上,而是在其他指定的,独立的特性分支中(这方面我们会马上谈到)。不直接提交改动到 master
分支上也是很多工作流程的一个共同的规则。
2. develop
是你进行任何新的开发的基础分支。当你开始一个新的功能分支时,它将是 开发 的基础。另外,该分支也汇集所有已经完成的功能,并等待被整合到 master
分支中。
这两个分支被称作为 长期分支。它们会存活在项目的整个生命周期中。而其他的分支,例如针对功能的分支,针对发行的分支,仅仅只是临时存在的。它们是根据需要来创建的,当它们完成了自己的任务之后就会被删除掉。
四、明确分支功能
1.master分支
最为稳定功能比较完整的随时可发布的代码,即代码开发完成,经过测试,没有明显的bug,才能合并到 master 中。请注意永远不要在 master 分支上直接开发和提交代码,以确保 master 上的代码一直可用;
2.develop分支
用作平时开发的主分支,并一直存在,永远是功能最新最全的分支,包含所有要发布 到下一个 release 的代码,主要用于合并其他分支,比如 feature 分支; 如果修改代码,新建 feature 分支修改完再合并到 develop 分支。所有的 feature、release 分支都是从 develop 分支上拉的。
3.feature分支
这个分支主要是用来开发新的功能,一旦开发完成,通过测试没问题(这个测试,测试新功能没问题),我们合并回develop 分支进入下一个 release 。
4.release分支
用于发布准备的专门分支。当开发进行到一定程度,或者说快到了既定的发布日,可以发布时,建立一个 release 分支并指定版本号(可以在 finish 的时候添加)。开发人员可以对 release 分支上的代码进行集中测试和修改bug。(这个测试,测试新功能与已有的功能是否有冲突,兼容性)全部完成经过测试没有问题后,将 release 分支上的代码合并到 master 分支和 develop 分支。
5.hotfix分支
用于修复线上代码的bug。 从 master 分支上拉。 完成 hotfix 后,打上 tag 我们合并回 master 和 develop 分支。
需要注意:
- 所有开发分支从 develop 分支拉。
- 所有 hotfix 分支从 master 拉。
- 所有在 master 上的提交都必要要有 tag,方便回滚。
- 只要有合并到 master 分支的操作,都需要和 develop 分支合并下,保证同步。
- master 和 develop 分支是主要分支,主要分支每种类型只能有一个,派生分支每个类型可以同时存 在多个。
五、关于 Feature 分支
在 Git-flow
中,通过使用 Feature
分支,使得我们在同一时间开发多个分支更加简单。
我们接到了一个 Test1
需求,使用 feature start
来启动:
git flow feature start test1
以上所述就是小编给大家介绍的《Git 版本控制之 Git-Flow》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 庖丁解LevelDB之版本控制
- 版本控制系统Git笔记
- DBeaver 切换至日历版本控制,版本号更新至 21.0
- Git分布式版本控制工具
- 版本控制工具——Git常用操作(上)
- 版本控制工具——Git常用操作(上)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。