1.1. 一、Git 客户端基本配置
1.1.1. 拉取分支
为了使提交路线图更清晰,在拉取代码的时候,统一使用 git pull --rebase ,而不是 git pull 。
可以通过以下命令,全局设置所有的分支 git pull 操作均使用 --rebase :
| 1<br/>2<br/>3 | git config --global pull.rebase<span> </span>`true<br/> <br/>git config --global branch.autoSetupRebase always` |
|---|
1.1.2. 合并分支
合并分支使用 --no-ff
默认情况下,Git 执行 快进式合并(fast-farward-merge) ,会直接将 main 分支指向 dev 分支。

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

1.2. 二、分支命名规范
main分支:线上稳定版本分支。develop分支:开发分支,衍生出feature分支和release分支。release分支:发布分支,准备待发布版本的分支,可以存在多个。feature分支:功能分支,完成特定功能开发的分支,可以存在多个。hotfix分支:紧急热修复分支,存在多个,紧急修复之后删除。
1.2.1. main 分支
- 主分支,永远处于稳定状态,对应当前线上版本。
- 不允许在该分支上直接提交代码。
1.2.2. develop 分支
- 开发分支,包含了项目最新的功能和代码,所有开发都依赖该分支进行。
- 不允许在该分支上直接提交代码。
1.2.3. feature 分支
- 功能分支,开发新功能的分支。
- 从
develop分支新建出feature分支。 - 分支名称以
feature-*形式命名,如:feature-moranique。 - 开发完成后,合并回
develop分支并且删除该分支。 - 如果是多人合作一个
feature,则应该在feature-*的分支基础上切出各自的分支,命名方式应以feature-FeatureName-Author形式命名,如:feature-moranique-hcryeo。
1.2.4. release 分支
- 发布分支,新功能合并到
develop分支,准备发布新版本时使用的分支。 - 当
develop分支完成功能合并和 BUG 修复,准备发布新版本时,切出一个release分支,来做发布前的准备。 - 分支名称以
release-*形式命名,如:release-1.0.0。 - 发布之前发现的 BUG 就直接在该分支上进行修复,确定准备发版后就合并到
main分支完成发布,同时合并到develop分支。
1.2.5. hotfix 分支
- 紧急修复线上 BUG 分支。
- 当线上版本出现 BUG 时,从
main分支切出一个hotfix-*分支,如:hotfix-moranique,完成 BUG 修复。 - 完成修复后,将该分支合并到
main分支和develop分支(如果此时存在release分支,则也应该合并到release分支),合并完成后删除该分支。
1.3. 三、分支操作流程

上面这张图是一张标准的 Git Flow 流程图,可能乍一眼看上去感觉很复杂,其实只要静下心来看一看就会发现其实一点都不复杂。
接下来,我们以开发 feature-A 为例,按照 时间线 上的顺序,用语言描述一下整个流程:
- 切换到
develop分支,拉取最新代码; - 从
develop分支检出feature分支,开发新功能; - 完成
feature分支完成,合并到develop分支; - 当某个版本所有的
feature分支均合并到develop分支,就可以检出release分支,准备发布新版本,提交测试并直接在release分支进行 BUG 修复; release分支上的所有 BUG 修复完成后,main分支和develop分支都需要合并release分支的代码,准备发布新版本;- 线上
main分支出现 BUG 修要紧急修复,则在main分支检出hotfix分支进行修复,然后main分支和develop分支都需要合并hotfix分支的 BUG 修复代码。