跳到主要内容
弗美科技
技术分享

两地协作后,Git 分支改了三条规矩

武汉那边开始提交代码之后,两周里出了三次合并冲突,其中一次把灰度配置覆盖了。我们把分支规矩收成三条:main 只接受合并请求、功能分支按项目加日期命名、每天下午四点前必须 push 一次。还加了个 CI 检查,分支超过 3 天没动就在群里点名。

2021年4月16日版本管理协作踩坑记录

两地都开始往同一个仓库提交之后,两周出了三次合并冲突。最麻烦的一次不是代码,是有人把灰度用的配置文件覆盖回了旧版,第二天测试环境跑的行为对不上,查了一上午。坐下来把规矩收了收,最后写成三条,贴在仓库 README 第一行。

1. main 不接受直接 push

以前人少,谁改完谁 push 到主干,图快。两地之后不行了,得走合并请求,哪怕只是改一行文案。要求至少一个人看过,两地各算一个人,顺便让另一边知道这边在动什么。

灰度配置那次之后,我们把配置文件单独放一个目录,加 CODEOWNERS,动它必须两边都点头。

2. 分支名带项目、日期、干的事

以前分支叫 fix、test、new,三天以后没人记得是谁的。现在格式是 项目缩写/日期/简短动作,比如 ly/20210414/recon-export。一眼能看出是哪套系统、哪天开的、要干嘛。

超过 3 天没提交的分支,CI 里加了个检查,每天扫一遍,在群里列出来。不是催,是防那种「开了一半忘了」的分支挂到年底。

3. 每天下午四点前 push 一次

这条最土,也最有用。不要求做完,哪怕写到一半、跑不通,也推上去,提交说明写「wip」。两地时差没有,但节奏会差:昌平下午在改的东西,武汉晚上接手时能看到,不用等第二天问。

配套的是提交说明不许只写一个「update」。我们没上格式校验那么严,只要求写清改了哪个文件、为什么。那次覆盖配置如果说明里写了「回退灰度开关」,一上午就省了。

顺带做的两件小事

  • 把 .env.example 补全了,新同事拉下代码不用再私聊问数据库端口。
  • 合并请求的模板里加了三个勾选项:本地跑过没、有没有改配置、定时任务有没有受影响。第三项是给对账那套系统专门加的,吃过亏。

一个月后

又数了一次,冲突还有,但都是真冲突,两边确实改了同一段逻辑,不是谁覆盖了谁。这种反而好办,拉个会十分钟说清。

README 那三条现在还挂着,一个字没改。

商务咨询 · 免费初步沟通

需要针对你的场景给个建议?

把业务背景和当前系统情况告诉我们,我们会给出可执行的思路。

在线留言

周一至周五 9:00–18:00 · 工作日 9:00–18:00 响应,留言会在一个工作日内回复。

商务微信
商务微信二维码

扫一扫,加商务微信咨询服务与方案报价

或填写需求表单