Git分支管理的策略梳理

简介:

当下最流行的版本管理系统应该是非Git莫属。相比同类软件,Git有很多优点,其中很显著的一点,就是版本的分支(branch)和合并(merge)十分方便。有些传统的版本管理软件,分支操作实际上会生成一份现有代码的物理拷贝,而Git只生成一个指向当前版本(又称"快照")的指针,因此非常快捷易用。但是,太方便了也会产生副作用。如果不加注意,很可能会留下一个枝节蔓生、四处开放的版本库,到处都是分支,完全看不出主干发展的脉络。Vincent Driessen提出了一个分支管理的策略,非常值得借鉴!它可以使得版本库的演进保持简洁,主干清晰,各个分支各司其职、井井有条。
下面就对这一策略做一简单梳理:

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

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

2)开发分支Develop
主分支只用来分布重大版本,日常开发应该在另一条分支上完成。我们把开发用的分支,叫做Develop。

1
2
3
4
5
6
7
8
9
10
11
12
这个分支可以用来生成代码的最新隔夜版本(nightly)。如果想正式对外发布,就在Master分支上,对Develop分支进行 "合并" (merge)。
 
Git创建Develop分支的命令:
# git checkout -b develop master
 
将Develop分支发布到Master分支的命令:
 
切换到Master分支
# git checkout master
 
对Develop分支进行合并
# git merge --no-ff develop

 上面命令中的--no-ff参数是什么意思。默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。

使用--no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰,我们希望采用这种做法。

3)临时性分支
前面讲到版本库的两条主要分支:Master和Develop。前者用于正式发布,后者用于日常开发。其实,常设分支只需要这两条就够了,不需要其他了。
但是,除了常设分支以外,还有一些临时性分支,用于应对一些特定目的的版本开发。临时性分支主要有三种:

1
2
3
4
5
1)功能(feature)分支
2)预发布(release)分支
3)修补bug(fixbug)分支
 
这三种分支都属于临时性需要,使用完以后,应该删除,使得代码库的常设分支始终只有Master和Develop。

4)功能分支
接下来,一个个来看这三种"临时性分支"。
第一种是功能分支,它是为了开发某种特定功能,从Develop分支上面分出来的。开发完成后,要再并入Develop。

1
2
3
4
5
6
7
8
9
10
11
功能分支的名字,可以采用feature-*的形式命名。
 
创建一个功能分支:
# git checkout -b feature-x develop
 
开发完成后,将功能分支合并到develop分支:
# git checkout develop
# git merge --no-ff feature-x
 
删除feature分支:
# git branch -d feature-x

5)预发布分支
第二种是预发布分支,它是指发布正式版本之前(即合并到Master分支之前),我们可能需要有一个预发布的版本进行测试。
预发布分支是从Develop分支上面分出来的,预发布结束以后,必须合并进Develop和Master分支。它的命名,可以采用release-*的形式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
创建一个预发布分支:
# git checkout -b release-1.2 develop
 
确认没有问题后,合并到master分支:
# git checkout master
# git merge --no-ff release-1.2
 
对合并生成的新节点,做一个标签
# git tag -a 1.2
 
再合并到develop分支:
# git checkout develop
# git merge --no-ff release-1.2
 
最后,删除预发布分支:
# git branch -d release-1.2

6)修补bug分支
最后一种是修补bug分支。软件正式发布以后,难免会出现bug。这时就需要创建一个分支,进行bug修补。
修补bug分支是从Master分支上面分出来的。修补结束以后,再合并进Master和Develop分支。它的命名,可以采用fixbug-*的形式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
创建一个修补bug分支:
# git checkout -b fixbug-0.1 master
 
修补结束后,合并到master分支:
# git checkout master
# git merge --no-ff fixbug-0.1
# git tag -a 0.1.1
 
再合并到develop分支:
# git checkout develop
# git merge --no-ff fixbug-0.1
 
最后,删除 "修补bug分支"
# git branch -d fixbug-0.1
***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************

本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/5691115.html ,如需转载请自行联系原作者
相关文章
|
9天前
|
缓存 开发工具 git
Git创建分支以及合并分支
在Git中,创建分支使用`git branch [branch_name]`,切换分支使用`git checkout [branch_name]`。修改文件后,通过`git add [file]`添加到暂存区,然后`git commit`提交到本地仓库。如果是新建分支的第一次推送,使用`git push origin [branch_name]`推送到远程仓库,之后可以简化为`git push`。合并分支时,使用`git merge [branch_name]`将指定分支的更改合并到当前分支。
13 2
Git创建分支以及合并分支
|
4月前
|
项目管理 开发工具 git
Git项目管理——分支(三)
Git项目管理——分支(三)
55 2
|
6天前
|
存储 Linux 开发工具
Git基础命令,分支,标签的使用【快速入门Git】
本文详细介绍了Git版本控制系统的基础概念和常用命令,包括工作区、暂存区和版本库的区别,文件状态的变化,以及如何进行文件的添加、提交、查看状态、重命名、删除、查看提交历史、远程仓库操作和分支管理,还涉及了Git标签的创建和删除,旨在帮助读者快速入门Git。
Git基础命令,分支,标签的使用【快速入门Git】
|
20天前
|
测试技术 开发工具 git
掌握 Git 分支策略:提升你的版本控制技能
在现代软件开发中,版本控制至关重要,Git 作为最流行的分布式版本控制系统,其分支管理策略对于高效协作和代码维护尤为重要。本文介绍了几种常用的 Git 分支策略,包括主线开发模型、功能分支模型、Gitflow 工作流和 Forking 工作流,并探讨了如何根据项目需求选择合适的分支模型。通过保持 `master` 分支稳定、及时合并清理分支、使用命名规范、利用 Pull Request 进行代码审查及自动化测试等最佳实践,可以显著提升团队协作效率和软件质量。掌握这些策略将帮助开发者更好地管理代码库,加快开发流程。
|
2月前
|
开发工具 git 开发者
|
2月前
|
项目管理 开发工具 git
|
2月前
|
敏捷开发 小程序 持续交付
【规范】Git分支管理,看看我司是咋整的
本文介绍了Git分支管理规范的重要性及其在企业中的应用。通过规范化的分支管理,可加速团队协作、确保代码质量、维护主分支稳定,并支持敏捷开发。文中详细描述了主分支(如master、develop)和辅助分支(如feature、hotfix)的作用,并提供了实际开发流程示例,包括开发前、开发中、提测、预生产和部署上线等阶段的操作方法。旨在帮助团队提高效率和代码质量。
45 0
【规范】Git分支管理,看看我司是咋整的
|
2月前
|
存储 小程序 安全
【技巧】git stash用的好,切换分支随便搞
本文详细介绍了 Git 中的 `git stash` 命令,帮助你在切换分支时临时保存未提交的更改。通过实际操作示例,展示了如何使用 `git stash` 的各种命令,如 `save`、`list`、`apply` 等。无论你是初学者还是有一定经验的开发者,都能从中受益。
33 0
【技巧】git stash用的好,切换分支随便搞
|
2月前
|
Shell 开发工具 git
|
2月前
|
JavaScript 测试技术 开发工具
Git 分支设计规范
Git 分支设计规范
88 11