Git 版本控制之 Git-Flow

栏目: 编程工具 · 发布时间: 6年前

内容简介:最近在着手制定开发规范,想要把项目正规高效的跑起来。计划引入 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 分支中。

Git 版本控制之 Git-Flow

这两个分支被称作为 长期分支。它们会存活在项目的整个生命周期中。而其他的分支,例如针对功能的分支,针对发行的分支,仅仅只是临时存在的。它们是根据需要来创建的,当它们完成了自己的任务之后就会被删除掉。

Git 版本控制之 Git-Flow

四、明确分支功能

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


以上所述就是小编给大家介绍的《Git 版本控制之 Git-Flow》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

代码里的世界观——通往架构师之路

代码里的世界观——通往架构师之路

余叶 / 人民邮电出版社 / 2018-11 / 59.00元

本书分为两大部分,第一部分讲述程序员在编写程序和组织代码时遇到的很多通用概念和共同问题,比如程序里的基本元素,如何面向对象,如何面向抽象编程,什么是耦合,如何进行单元测试等。第二部分讲述程序员在编写代码时都会遇到的思考和选择,比如程序员的两种工作模式,如何坚持技术成长,程序员的组织生产方法,程序员的职业生涯规划等。一起来看看 《代码里的世界观——通往架构师之路》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具