0%

Git—Flow实现团队开发规范化

前言

在之前所做的小项目中,只把git当作版本存储工具使用,在团队合作方面未有了解。
接到一个功能后,很自然的就把它提交到了origin/kick下,结果挨训了


于是了解了一下Git-Flow相关概念和使用,在这里做个记录

Git-Flow简介

首先,Git作为一个源码管理系统,不可避免涉及到多人协作,而协作就必须要有一个规范的工作流程(Flow),让大家更有效的合作,这样才不会发生冲击碰撞。

一个成熟的项目,应该存在两个长期分支。

1
2
1. 主分支 		master
2. 开发分支 develop

master用于存放对外发布的版本,一般不在master上直接进行开发,而是通过将其他分支合并到master分支的方式,修改master。

develop分支用于日常开发,存放最新的开发版。

除此之外,项目应该还存在三种短期分支。

1
2
3
1. 功能分支 	feature             (一般是基于develop的)
2. 补丁分支 hotfix
3. 预发分支 release

一旦开发完成,他们就会被合并到developmaster,然后被删除
他们的关系如下:

Git-Flow使用

下载

下载Git-Flow,在mac/linux下可以通过如下命令安装:

1
brew install git-flow

使用

初始化

进入项目文件夹(.git所在到文件夹)下,输入如下命令

1
git flow init

接下来设置每个分支的名字,一般不需要更改,按默认的全程回车就好

功能模块

增加新功能

就以我上面所提到的kick功能为例,我需要在feature下创建一个kick的分支,命令如下:

1
2
#git flow feature  start 分支名
git flow feature start kick

这个命令会创建一个feature下的分支,并自动切换到该分支

完成新功能

在这个功能完善之后,通过如下命令将其合并到develop并删除分支。

1
2
#git flow feature finish 分支名
git flow feature finish kick

这个命令会将该feature下的kick分支合并到develop,并自动删除该kick分支

版本管理

创建新版本

当在某个阶段,我们的feature都已经完善,并且通过了测试,我们可以将该develop分支进行发布(release)。

1
2
#git flow release start 版本号
git flow release start 1.1.5

需要注意的是,发布分支是使用版本号命名的。

发布新版本

通过如下命令发布新版本

1
2
#git flow release finish 版本号
git flow release finish 1.1.5

该命令会触发如下几个操作

  • Git-Flow从远程仓库fetch数据以确保本地的数据是最新的。
  • 内容被合并到“master”和“develop”
  • 发布分支被删除,回到develop

修复bug

创建修补分支

不写bug到程序员不是好程序员。我们总会遇到这样一种情况,当我们新版本上线后,却被发现了bug。二bug修复无论在release还是在feature上都不太合适。于是Git-Flow为我们提供了hotfix分支。命令如下:

1
2
#git flow hotfix start 分支名
git flow hotfix start missing-link

该命令将基于master创建一个修补分支。

完成修复程序

但熬到凌晨两点修复完这个bug后,我们需要通过如下命令发布该修复的分支。

1
2
#git flow hotfix finish 分支名
git flow hotfix finish missing-link

该命令和完成发布非常相似,会进行如下操作:

  • 该修改会同时合并到develop和master(以确保错误不会再次进入下一个版本)
  • 分支被删除,并在此进入develop

小结

Git-Flow并没有在Git上添加然后新功能,它只是一组将Git命令捆绑到工作流中的脚本。没有Git-Flow也可以用Git自带的命令完成这些功能。

另外,经过这次,在Git团队协作方面总算是入门了。

-------------------本文结束 感谢阅读-------------------