现在的版本控制越来越重要,还记得毕业那会写毕业设计一个个版本,搞得头昏脑涨,不过当时已经接触了版本迭代在自己的机器上部署了一个SVN Server,用程序员的方式轻松解决一个个版本。

毕业设计

毕业后用过SVN,在超星时用得就是SVN,后来在世界邦用的是Git,对于版本控制来说那种都无所谓,不过对于用过Git的人来说,Git在分支和分布式版本这块和SVN还是有很大的区别,不过就冲Git优秀分支管理这块很适合客户端的开发,版本迭代快、团队人数不多,用起Git更能提高自己的效率。有了天书第六部,我们还怕张小凡么?

推荐

至于Git的基础命令我推荐几个比较好的网站:

  1. Pro Git官网
  2. 廖雪峰的Git教程
  3. Git入门指南使用资料汇总及文章推荐
  4. 图文并茂-猴子都能懂的git入门教程
  5. A successful Git branching model

其中Git入门指南使用资料汇总及文章推荐提到了git flow项目地址,git flow其实是为了更好的利用Git分支对git 命令的一个封装,省时省力,不信来张图。

git flow

介绍

Git Flow模型中定义了主分支和辅助分支两类分支。其中主分支用于组织与软件开发、部署相关的活动;辅助分支组织为了解决特定的问题而进行的各种开发活动。

另外的一个

master分支

主分支,是你发版的release时打的tag,是稳定版本,每一个版本都要打一个version tag。

develop分支

develop分支,主分支开发分支,总是我们最新版本,虽然不稳定,但是有我们最新的版本,当开发完,QA通过,版本迭代完毕,将develop merge回主分支。

辅助分支

  1. release分支 release分支是为发布新的产品版本而设计的。在这个分支上的代码允许做小的缺陷修正、准备发布版本所需的各项说明信息(版本号、发布时间、编译时间等等)。
  2. feature分支:是develop的功能分支,如有几个同事同时开发,需要切换成几个小功能,每个人都需要从从develop中拉出一个feature分支,但是每个feature颗粒要尽量小,因为它需要我们能尽早merge会develop分支,否则冲突解决起来就没完没了。同时,当一个功能因为各种原因不开发了或者放弃了,这个分支直接废弃,不影响其他develop分支。
  3. hot-fix分支:是一个比较特殊的分支,如图是从master分支上分出来的一个分支,如发版后发现有个紧急修复的bug,这时就需要用到hot-fix分支,修改完bug,结束了这个hot-fix,回合并修改的内容到develop分支和mastar分支。

常用的分支约定:

用于新建发布分支的分支: develop
用于合并的分支: master
分支命名: release-* 或 release/*

截了一个git-flow 备忘清单网站上的图。

案例

创建开发分支

创建一个本地分支

1
2
git branch develop
git push -u origin develop

或者checkout一份到本地

1
git checkout -b develop origin/develop

初始化git flow

1
git flow init

feature分支

开始创建新的需求分支

1
git flow feature start feature1 #这时项目会自动切换 feature/feature1分支

提交日志到本地仓库

1
git commit -a -m "修改日志"

完成开发分支合并develop(自动)

1
git flow feature finish feature1

发布到远程开发分支

1
git push origin develop

hotfix分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
更新master分支
git pull origin master(更新master分支为最新)

切换到master分支
git checkout master

生成一个hotfix分支
git flow hotfix start hfx

通知相关得工程师和测试人员hotfix分支名称

最终测试完成后拉回分支最新代码
git pull origin hotfix/hfx

最终修改和测试完成后,结束hot fix以供发布
git flow hot fix finish hfx

发布最终的master分支
git push origin master

参考文章

  1. 基于git的源代码管理模型——git flow
  2. 猴子都能懂得git入门
  3. Git工作流指南:Gitflow工作流