Git 分支的约束和管理
此内容尚不支持你的语言。
来源:dxyoo7
一、分支说明
- main
- 主分支,用作生产分支,里面的代码是准备部署到生产环境的。 main 永远处于稳定状态,这个分支代码可以随时用来部署。
- main 不提交代码,只合并代码。
- 合并代码到 main 的操作,由项目对应的集成管理员专人负责。
- 各分支要定期将 main 代码合并进来,避免后续分支合并到 main 时容易产生冲突,以减轻集成管理员的合并负担。
- 发版之前,要打 tag 。
- develop
- 从哪个分支分离开来: main
- 可以合并到哪个分支上:release
Develop(开发)分支,包含了项目最新的功能和代码,所有开发都在 develop 上进行。一般情况下小的修改直接在这个分支上提交代码。
- release
- 从哪个分支分离开来:develop
- 必须要合并到哪个分支上:develop 与 main
- 分支的命名规范:release-*
Release (发行)分支,是为发行正式的生产版本做准备。当开发的差不多了,准备发行就可以创建一个发行分支,在这个分支上可以做一些小的 bug 修复,准备发行的元数据,比如版本号,发行日期之类的。这时候,develop 分支可以继续接收新的提交,为下一个发行做准备。
- feat
- 从哪个分支分离开来:develop
- 必须要合并到哪个分支上:develop
- 分支的命名规范:除了 main ,develop,release-,或者 hotfix- 以外的名字都可以
Feature(功能) 分支,有时候也叫 Topic 分支。在这种分支上去开发新的功能。当开发功能的时候,这个功能属于哪个目标发行还不知道。功能如果一直在开发,对应的这个功能分支就可以一直存在,不过到最后还是要合并到 develop 分支上,或者如果不想要开发的这个功能了,可以直接扔掉它。 Feature 分支一般只在开发者的 repo 里,而不是在 origin 上。
- hotfix
- 从哪个分支分离开来: main
- 必须要合并到哪个分支上:develop 与 main
- 分支的命名规范:hotfix-*
当在生产版本上遇到 bug,你需要立即修复的时候,可以创建一个 Hotfix 分支,这个分支可以基于生产环境使用的对应的在 main 分支上的 tag 来创建。
- fix/bugfix
- 从哪个分支分离开来: main
- 必须要合并到哪个分支上:develop 与 main
- 分支的命名规范:hotfix-*
等同于hotfix,只是紧急性没有hotfix那么急迫。
如下图所示:
二、分支开发
新版本开始:每个人从最新develop上checkout一个本地分支做开发; 本阶段:禁止直接在develop上开发; 如预期需要协助,可以几个人协同一个远端分支开发;一般会在远端创建version-develop分支
- 开发周期:一个版本的迭代周期,我们分成3个里程碑(v1, v2, v3);
- v1版本:开发完成,会merge各自分支到develop;此时develop才进入下一个开发周期; 同时发布v1包给测试; v1的Bug,大家可以选择在develop上直接修改,或者继续在各自的本地分支上修改;
- v2、v3版本:建议还是在各自的本地分支上继续开发; 完成feature后,同样merge回develop;
三、分支操作参考
- main
# 合并release分支git checkout maingit pull origin main --rebasegit merge --no-ff releasegit tag V1.0git push origin main
# 或者合并hotfix分支git checkout maingit pull origin main --rebasegit merge --no-ff releasegit tag V1.1git push origin main
- develop
# 创建develop分支(第一次)git checkout maingit pull origin main --rebasegit checkout -b developgit push origin develop
# 合并一般的feature分支(推送到远程的feature分支)git checkout developgit pull origin develop --rebasegit merge --no-ff featuregit push origin develop
# 合并较小的feature分支(不推送到远程的feature分支)# 1)获取最新develpo分支内容git checkout developgit pull origin develop --rebase# 2)回合developgit checkout featuregit rebase develop# 3)merge featuregit merge --no-ff featuregit push origin develop
- release
# 从develop切出realse分支git checkout -b release
# 合并develop分支git pull origin release --rebasegit merge --no-ff developgit push origin develop
- feature
# 从develop切出feature分支1) #拉取最新develop分支代码git checkout developgit pull origin develop --rebase2)#切出新的feature分支git checkout -b feature3) #合并到develop(merge)git checkout developgit pull origin develop --rebasegit merge --no-ff featuregit push origin develop
3) #合并到develop(rebase)git checkout developgit pull origin develop --rebasegit checkout featuregit rebase develop# 如果有冲突,修改好后,执行以下(千万不要执行git commit XX)|| git add .|| git rebase --continuegit checkout developgit merge --no-ff featuregit push origin develop
- hotfix
从 main 切出hotfix分支
git checkout main git pull origin main —rebase git checkout -b hotfix
main 合并分支hotfix
git checkout main git pull origin main —rebase git merge —no-ff hotfix git tag V1.1 git push origin main
develop合并分支hotfix
git checkout develop git pull origin develop —rebase git merge —no-ff hotfix git push origin develop
- bugfix
同 hotfix,但不一定是从 main 分支切出.