5.4 KiB
Raw Blame History

主线同步操作手册

适用对象:会用 Codex 协作、但不一定熟悉 Git 的同事。
目标:当 main 持续更新时,你仍然能把自己的分支保持在最新状态,不把代码做旧,不把冲突拖到最后一天。


1. 先记住一句话

你不要直接改 main。
你只在自己的分支里开发,然后经常把最新的 main 同步进来。

当前推荐分工:

  • WuYongJie 负责主线 main
  • 其他协作者在自己的长期共享分支或临时任务分支开发

分支命名固定规则:

  • 新分支统一用 codex/<负责人>-<工作域> 或 codex/<负责人>-<工作域>-<任务简称>
  • main 只由 WuYongJie 收口,其他协作者只在自己的分支里同步和开发
  • 长期共享分支和临时任务分支都要把当前工作域写进分支名
  • 不再使用 codex/xuxiake-dev 这种看不出职责的泛分支名

2. 你每天就做这 3 件事

开工前

先同步一次最新主线。

主负责人刚推了重要改动后

再同步一次,不要继续拿旧代码往下写。

你准备提交前

最后再同步一次,避免你推上去的分支已经落后很多。


3. 默认操作步骤

先加一个固定前置动作:

git status --short

如果这里不是空的,先把当前改动处理好再同步主线:

  • 要保留并提交:先提交到你当前分支
  • 只是临时改动:先暂存(stash)再继续

不要在“有一堆未提交改动”时直接 merge main 或 rebase main。


如果你现在在长期共享分支,就把下面这 5 行命令原样交给 Codex 执行:

git checkout main
git pull origin main
git checkout <你的长期共享分支>
git merge main
git push origin <你的长期共享分支>

这组命令的白话意思:

  1. 先把本地 main 拉到最新
  2. 切回你的长期共享分支
  3. 把最新主线合进这个共享分支
  4. 再把共享分支推上去

4. 如果你临时开了个人任务分支

只有在你从长期共享分支再开出个人任务分支时,才用下面这套:

git checkout main
git pull origin main
git checkout <你的分支名>
git rebase main
git push --force-with-lease origin <你的分支名>

它的特点:

  • 好处:任务分支提交更直
  • 代价:会改写历史,不适合长期共享分支

怎么选最简单:

  • 长期共享分支固定用 merge
  • 只有你一个人在用的短期任务分支,才用 rebase
  • 如果这个分支会被别人继续接手或反复同步,就按长期共享分支处理,不能为了图直线历史去改写公共提交

5. 什么时候说明你已经落后主线了

出现下面任意一种情况,就不要继续写了,先同步:

  • 主负责人刚改了你也会碰到的模块
  • Codex 提示分支落后
  • 你打开页面后,发现和主线最新效果不一样
  • 你准备提交,但已经隔了半天或一天没同步

6. 如果同步时出现冲突

不要慌,按这个顺序处理:

  1. 先停下来,不要乱点保存
  2. 看冲突文件是不是你这次本来就在改的模块
  3. 如果不是你负责的模块,先问主负责人
  4. 如果是你负责的模块,就保留你的目标改动,再把主线的新内容接进去
  5. 处理完后再继续让 Codex 帮你完成 rebase 或 merge

可以直接把下面这段话发给 Codex:

我在同步 main 到我的分支时遇到冲突了。
请只帮我处理这几个冲突文件,不要扩范围,不要改无关模块。
优先保留主线最新结构,再把我这个分支的目标改动接进去。
处理后请告诉我还需要执行什么命令。

7. 绝对不要这样做

  • 不要直接在 main 上开发
  • 不要长时间不同步主线
  • 不要等“全部做完了”才第一次同步
  • 不要把 dev 当万能长期分支名
  • 不要对长期共享分支执行 git rebase main
  • 不要看到冲突就随手全选自己的版本
  • 不要在没看懂的情况下执行 git reset --hard

8. 主线负责人怎么收同事分支

当同事分支已经推上来后,WuYongJie 固定按下面顺序做:

  1. 先看交接说明,确认本次只做什么、没做什么、验证跑了什么
  2. 看分支有没有同步最新 main
  3. 看改动有没有超出任务范围,或者碰到共享接缝
  4. 再决定这次是 merge、cherry-pick,还是手工整合

最简单判断法:

  • 分支干净、范围对、验证齐:merge
  • 只有部分提交该进主线:cherry-pick
  • 目标能收,但提交历史太乱或冲突太多:手工整合
  • 没同步、没说明、没验证:先不收

如果同事改到了 draft-group / intake / schema.prisma / src/app/draft-groups/[id] 这类共享接缝,再多看一步:

  • 为什么非改不可
  • 这次改动是不是只为当前任务服务
  • 有没有把包装逻辑带进正式入库或轻仓库主链

9. 给同事最短口令版

如果你懒得记,只记这一段:

每天开工前,先把 main 拉最新,再把 main merge 进你的长期共享分支。
只有你临时开的个人任务分支才用 rebase。
如果冲突了,不要硬处理,先让 Codex 只处理冲突文件。

补充说明:

  • 历史文档里如果还出现固定包装分支名,那是旧协作阶段留下的例子,不再代表当前唯一允许的长期分支。
  • 当前哪条分支算“长期共享分支”,以最新交接、当前任务边界和实际协作方式为准。