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 修复代码。