git-workflow:Git分支和流程

2022-02-05  本文已影响0人  希望是水户洋平

git-workflow:Git分支和流程

分支分类

使用下述git分支

master 永远处于稳定状态,这个分支代码可以随时用来部署, 具备生产发布要求的分支。
注意:

不允许在该分支直接提交代码

该分支仅接受从develop分支merge代码,由git repo的maintainer负责。

注意:

代码通过merge request的方式提交,需要经过git repo的maintainer code revie后才能合并到develop分支。

分支切换流程

分支切换流程使用下述规则:

简单功能开发流程
feature/xxxdevelopmastergraph LR;
feature/xxx-->develop;
develop-->master;

从master分支创建新的feature分支。
feature分支开发完成,模块单元测试通过后,提交到develop分支。
develop分支下联调通过,系统测试通过后,提交到master分支。

bug修复流程

fix/xxxdevelopmastergraph LR;
fix/xxx --> develop;
develop --> master;

从master分支创建新的fix分支。
fix分支下修复完成,单元测试通过后,提交到develop分支。
develop分支下联调通过,系统测试通过后,提交到master分支。

复杂功能开发流程

dev/xxxfeature/xxxdevelopmastergraph LR;
dev/xxx --> feature/xxx;
feature/xxx --> develop;
develop --> master;

从master分支创建新的feature/xxx分支。

从feature/xxx分支创建dev/xxx分支。
dev/xxx分支开发完成,单元测试通过后,提交到feature/xxx分支。
dev/xxx分支开发未结束,需要暂存分支,则可以创建新的dev/yyy分支,push到gitlab上暂存。
feature分支开发完成,模块单元测试通过后,提交到develop分支。
develop分支下联调通过,系统测试通过后,提交到master分支。

生产发布

master的分支是可用于生产的,如果需要部署某个commit,则先git tag, tag的格式为"YYYYMMDD"。
git tag后,将tag push到生产环境(IDC)的一个git repo。再从运行目录中pull该repo.

其他规则

分支合并(pull request)由项目maintainer进行,使用merge方式,不建议使用rebase方式。
分支的流程是单向的,禁止反向进行分支合并(特殊情况需要由maintainer进行cherry-pick)。
由项目maintainer定期删除已经merge的feature/yyy分支,或确认废弃的dev/yyy分支。
基于gitlab管理代码,issue, 和进度。
基于gitlab管理项目文档(包括背景,方案等),统一存放在各项目的doc目录, README文件为项目描述文档。
当一个git repo超出原项目范围时,需要通过git submodule或git subtree拆分,提高代码的重用效率。

一些参考流程

以 develop 分支为基础建立 feature/xxx 分支

git checkout -b feature/xxx develop

写代码,review,提交……

feature 开发完成,合并回 develop

$ git checkout develop
$ git pull
$ git merge feature/xxx

删除本地的 feature 分支

$ git branch -d feature/xxx
注意,只有git repo的Maintainer可以删除git repo的分支。
如果想要当前分支能保持与 develop 的更新,请用 rebase,操作如下:

假设当前在 feature/xxx 分支

git rebase develop

rebase 会修改历史,如果你的 feature 分支是跟人合作开发的,请互相做好协调。

git checkout -b release/1.0.0 master
上一篇下一篇

猜你喜欢

热点阅读