月度归档:2015年12月

Git分支管理规范

作者:余俊峰 tobecontinued.cn

当前最流行的版本管理系统Git,相比同类系统有很多优点,其中显著的一点,是版本的分支(branch)管理,以及分支的合并(merge)十分方便。Git分支并不会生成一份现有代码的物理拷贝,而只是生成一个指向当前版本快照的指针,因此非常快捷易用。

Git默认有一个主分支master,用于正式布。通常的做法,还建有一个开发分支develop,用于日常开发。一般常设分支有这二个就够了。

除了常设分支外,还有一些临时性分支,主要有三种:功能(feature)分支、预发布(release)分支、修补缺陷(fixbug)分支。这些分支都属于临时性需要,使用完以后应该删除,使得代码库的常设分支始终只有master和develop。

切换分支之前,确保当前分支没有未提交的修改。否则,当前分支修改过的文件,切换到另一个分支也会呈现修改过的状态。

1、主分支master

Git主分支的名字,默认叫做master。版本库初始化以后,自动建立主分支,默认在主分支在进行开发。

代码库应该有且只有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。

2、开发分支develop

主分支只用来分布重大版本,日常开发应该开发分支develop上完成。

创建develop分支的命令:

如果想正式对外发布,就切换到master分支上,对develop分支进行“合并”(merge)。

将develop分支发布到master分支的命令:

默认情况下,Git的合并命令merge执行“快进式合并”(fast-farward merge),会直接将master分支指向develop分支。

命令merge使用”–no-ff”参数后,会执行合并时在master分支上生成一个新节点。为了保证版本演进的清晰,推荐采用这种做法。

3、临时分支

3.1、功能(feature)分支

功能分支是为了开发某种特定功能,从develop分支上面分出来的。开发完成后,要再并入develop。

功能分支的名字,推荐采用feature-*的形式。

创建一个功能分支:

开发完成后,将功能分支合并到develop分支:

删除功能分支:

3.2、预发布(release)分支

预发布分支指发布正式版本之前,即合并到master分支之前,从develop分支上面分出来进行测试的版本。预发布结束以后,再合并到develop和master分支。

预发布分支的名字,推荐采用release-*的形式。

创建一个预发布分支:

确认没有问题后,合并到master分支:

注意:默认情况下,”git push”命令不会将标签上传到远程服务器上。为了共享这些标签,必须在”git push”命令后添加”–tags”选项。

再合并到develop分支:

最后,删除预发布分支:

3.3、修补缺陷(fixbug)分支

软件正式发布以后,难免会出现缺陷。这时就需要创建一个分支,进行修补。修补缺陷分支从master分支上面分出来,修补结束以后,再合并到master和develop分支。

修补缺陷分支的名字,推荐采用采用fixbug-*的形式。

创建一个修补缺陷分支:

修补结束后,合并到master分支:

再合并到develop分支:

最后,删除修补缺陷分支: