目录

git工作流程的分类和对应场景

一、版本发布 git flow

参考: www.ruanyifeng.com/blog/2012/0...

Git flow的优点:是清晰可控。

缺点1:是相对复杂,需要同时维护两个长期分支。大多数工具都将master当作默认分支,可是开发是在develop分支进行的,这导致经常要切换分支,非常烦人。

缺点2:更大问题在于,这个模式是基于"版本发布"的,目标是一段时间以后产出一个新版本。但是,很多网站项目是"持续发布",代码一有变动,就部署一次。这时,master分支和develop分支的差别不大,没必要维护两个长期分支。

二、持续迭代(以github为代表)

功能分支合并进 master 分支,必须通过Pull Request(Gitlab里面叫做 Merge Request

Github flow 的最大优点:就是简单,对于"持续发布"的产品,可以说是最合适的流程。

缺点:在于它的假设,master分支的更新与产品的发布是一致的。也就是说,master分支的最新代码,默认就是当前的线上代码。经常,master一个主分支就不够用了,你不得不在master分支以外,另外新建一个production分支跟踪线上版本。

三、版本发布和持续迭代的结合 (gitlab为代表)

(1)持续迭代

对于"持续发布"的项目,它建议在master分支以外,再建立不同的环境分支。比如,"开发环境"的分支是master,"预发环境"的分支是pre-production,"生产环境"的分支是production

(2)版本迭代

对于"版本发布"的项目,建议的做法是每一个稳定版本,都要从master分支拉出一个分支,比如2-3-stable2-4-stable等等。

以后,只有修补bug,才允许将代码合并到这些分支,并且此时要更新小版本号。

四、多版本的版本发布, multi git flow

(1) main用于版本发布。

Main上代码永远是测试完毕的,并且需要打相应的tag,比如2.0.0-20250101 (版本号 + 日期)

(2)version分支,相当于develop分支。

根据产品文档需求,比如2.0.4,就产生version2.0.4分支,这个分支是基于当前master的tag 2.0.3最新版本的。

测试过程中:使用持续合并到某个version分支。

(3)个人本地开发分支

基于version分支,新建个人本地的分支。

合并到version分支时候,需要提交 merge request ,指定相应的负责人 code review 每个commit和文件。

备注:

另外,跟开发分支有冲突并且只能手动解决的时候,gitlab会拦截,提交不了merge request, 可以在网页端解决,更建议在vscode端解决。

(4)bugfix分支

基于master,新建一个bugfix分支,修复验证后,合并入master。并且打上最新日期的tag,比如比如2.0.0-20250207 (版本号 + 日期)

五、协作机制

(1)使用机器人提醒merge request,除文案修改外,其他都需要pull request或者说merge request。

(2)安排任务时候,记得预留 codereview时间, 尤其是项目带头人。

形式1:可以结对codereview。

形式2: 项目带头人codereview 小组成员的代码,项目带头人自己的代码安排给有时间的小组成员的代码

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
程序猿chen4 小时前
《JVM考古现场(十六):太初奇点——从普朗克常量到宇宙弦的编译风暴》
jvm·git·后端·程序人生·金融·java-ee·量子计算
死磕java的孤行者6 小时前
Git 分布式版本控制工具
分布式·git·elasticsearch
java搬砖工-苤-初心不变14 小时前
解决 Git 通过 SSH 克隆仓库时自动转换为 HTTPS 的问题
git·https·ssh
Naomi5211 天前
自定义汇编语言(Custom Assembly Language) 和 Unix & Git
服务器·开发语言·git·unix
@BreCaspian1 天前
Git 从入门到精通(开源协作特别版)
git·开源
谢尔登1 天前
【已解决】Webstorm 每次使用 git pull/push 都要输入令牌/密码登录
ide·git·webstorm
紫阡星影1 天前
TortoiseGit多账号切换配置
git·gitee·tortoisegit
予早1 天前
git kex_exchange_identification 相关问题
git
鸠摩智首席音效师1 天前
如何完整迁移 Git 仓库 ?
git
诚诚程程成1 天前
git配置github
git·github