特性分支
特性分支有时也被称为Topic分支,一般是用来开发新的特性,而其关联的发布可能近在眼前,也有可能需要很长一段时间,特性分支最终会被合并到develop分支或者最终会被丢弃。
性分支开发的时候在git flow模型中一般遵循如下步骤:
步骤 | 内容 | git 命令 |
---|---|---|
Step 1 | 以develop分支为基础创建特性分支 | svn copy develop分支URL 特性分支名称(放到features下) |
Step 2 | 进行特性内容开发直至可以提交 | |
Step 3 | 特性分支开发完成后切换至develop分支 | cd ../../develop |
Step 4 | 合并特性分支开发内容到develop分支 | svn merge 特性分支名URL |
Step 5 | develop分支分支内容提交 | svn commit -m “merge for …” |
Step 6 | 删除特性分支 | svn rm 特性分支名URL |
特性分支的使用注意事项如下:
注意事项 | 详细说明 |
---|---|
源分支 | 特性分支需要以develop分支为源分支 |
目标分支 | 特性分支的合并目标分支为develop分支,此模型中只能合并回develop分支 |
分支命名 | 除去master/develop/hotfix-/release-命名的所有分支 |
模拟
场景说明:以开发主分支develop的某一时点为基础,创建临时特性开发分支,开发完成之后合并回develop分支,并将此临时特性开发分支删除。
Step 1: 创建特性分支F1001
[root@platform develop]# svn copy svn://192.168.163.129:3690/gitflow-repo/develop svn://192.168.163.129:3690/gitflow-repo/features/F1001
Committed revision 5.
[root@platform develop]#
Step 2:开发并提交
在特性分支上进行开发,并提交,这里生成一个新的文件C3
[root@platform gitflow-repo]# cd features/F1001/
[root@platform F1001]# touch C3; svn add C3; svn commit -m "add C3 in feature F1001"
A C3
Adding C3
Transmitting file data .
Committed revision 6.
[root@platform F1001]#
Step 3: 切换至develop分支
[root@platform F1001]# cd ../../develop/
[root@platform develop]#
Step 4:内容合并至develop分支
[root@platform develop]# svn merge svn://192.168.163.129:3690/gitflow-repo/features/F1001
--- Merging r5 through r6 into '.':
A C3
--- Recording mergeinfo for merge of r5 through r6 into '.':
U .
[root@platform develop]#
Step 5:develop分支内容提交
[root@platform develop]# svn commit -m "merge for feature branch F1001"
Sending .
Adding C3
Committed revision 7.
[root@platform develop]#
Step 6:删除特性分支
特性分支内容已经合并到develop分支,包括日志信息都已包含,特性分支本身是临时分支,除非有特殊理由,包括gitflow的标准模型也建议此时删除,在svn 中使用rm命令将此不用的分支删除,不然会越积越多。
[root@platform develop]# svn rm svn://192.168.163.129:3690/gitflow-repo/features/F1001
Committed revision 8.
[root@platform develop]#
本地更新一下就可以看到,特性分支F1001已经被删除
[root@platform gitflow-repo]# svn update
Updating '.':
D features/F1001
Updated to revision 8.
[root@platform gitflow-repo]#
整体日志确认
[root@platform gitflow-repo]# svn log
------------------------------------------------------------------------
r8 | devuser1 | 2018-08-26 17:39:29 -0400 (Sun, 26 Aug 2018) | 2 lines
delete feature branch F1001
------------------------------------------------------------------------
r7 | devuser1 | 2018-08-26 17:34:24 -0400 (Sun, 26 Aug 2018) | 1 line
merge for feature branch F1001
------------------------------------------------------------------------
r6 | devuser1 | 2018-08-26 17:31:37 -0400 (Sun, 26 Aug 2018) | 1 line
add C3 in feature F1001
------------------------------------------------------------------------
r5 | devuser1 | 2018-08-26 17:29:48 -0400 (Sun, 26 Aug 2018) | 2 lines
init feature branch F1001
------------------------------------------------------------------------
r4 | devuser1 | 2018-08-26 17:25:29 -0400 (Sun, 26 Aug 2018) | 1 line
add C2 in develop branch
------------------------------------------------------------------------
r3 | devuser1 | 2018-08-26 17:21:33 -0400 (Sun, 26 Aug 2018) | 2 lines
init develop branch
------------------------------------------------------------------------
r2 | devuser1 | 2018-08-26 17:18:55 -0400 (Sun, 26 Aug 2018) | 1 line
add C1
------------------------------------------------------------------------
r1 | devuser1 | 2018-08-26 17:13:36 -0400 (Sun, 26 Aug 2018) | 1 line
init gitflow structure
------------------------------------------------------------------------
[root@platform gitflow-repo]#
这样一个特性分支就完成了它的历史使命,从哪里来(develop)还回归到了哪里(develop)去,最终被删除。