5.4 KiB
5.4 KiB
主线同步操作手册
适用对象:会用 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 <你的长期共享分支>
这组命令的白话意思:
- 先把本地
main拉到最新 - 切回你的长期共享分支
- 把最新主线合进这个共享分支
- 再把共享分支推上去
4. 如果你临时开了个人任务分支
只有在你从长期共享分支再开出个人任务分支时,才用下面这套:
git checkout main
git pull origin main
git checkout <你的分支名>
git rebase main
git push --force-with-lease origin <你的分支名>
它的特点:
- 好处:任务分支提交更直
- 代价:会改写历史,不适合长期共享分支
怎么选最简单:
- 长期共享分支固定用
merge - 只有你一个人在用的短期任务分支,才用
rebase - 如果这个分支会被别人继续接手或反复同步,就按长期共享分支处理,不能为了图直线历史去改写公共提交
5. 什么时候说明你已经落后主线了
出现下面任意一种情况,就不要继续写了,先同步:
- 主负责人刚改了你也会碰到的模块
- Codex 提示分支落后
- 你打开页面后,发现和主线最新效果不一样
- 你准备提交,但已经隔了半天或一天没同步
6. 如果同步时出现冲突
不要慌,按这个顺序处理:
- 先停下来,不要乱点保存
- 看冲突文件是不是你这次本来就在改的模块
- 如果不是你负责的模块,先问主负责人
- 如果是你负责的模块,就保留你的目标改动,再把主线的新内容接进去
- 处理完后再继续让 Codex 帮你完成
rebase或merge
可以直接把下面这段话发给 Codex:
我在同步 main 到我的分支时遇到冲突了。
请只帮我处理这几个冲突文件,不要扩范围,不要改无关模块。
优先保留主线最新结构,再把我这个分支的目标改动接进去。
处理后请告诉我还需要执行什么命令。
7. 绝对不要这样做
- 不要直接在
main上开发 - 不要长时间不同步主线
- 不要等“全部做完了”才第一次同步
- 不要把
dev当万能长期分支名 - 不要对长期共享分支执行
git rebase main - 不要看到冲突就随手全选自己的版本
- 不要在没看懂的情况下执行
git reset --hard
8. 主线负责人怎么收同事分支
当同事分支已经推上来后,WuYongJie 固定按下面顺序做:
- 先看交接说明,确认本次只做什么、没做什么、验证跑了什么
- 看分支有没有同步最新
main - 看改动有没有超出任务范围,或者碰到共享接缝
- 再决定这次是
merge、cherry-pick,还是手工整合
最简单判断法:
- 分支干净、范围对、验证齐:
merge - 只有部分提交该进主线:
cherry-pick - 目标能收,但提交历史太乱或冲突太多:手工整合
- 没同步、没说明、没验证:先不收
如果同事改到了 draft-group / intake / schema.prisma / src/app/draft-groups/[id] 这类共享接缝,再多看一步:
- 为什么非改不可
- 这次改动是不是只为当前任务服务
- 有没有把包装逻辑带进正式入库或轻仓库主链
9. 给同事最短口令版
如果你懒得记,只记这一段:
每天开工前,先把 main 拉最新,再把 main merge 进你的长期共享分支。
只有你临时开的个人任务分支才用 rebase。
如果冲突了,不要硬处理,先让 Codex 只处理冲突文件。
补充说明:
- 历史文档里如果还出现固定包装分支名,那是旧协作阶段留下的例子,不再代表当前唯一允许的长期分支。
- 当前哪条分支算“长期共享分支”,以最新交接、当前任务边界和实际协作方式为准。