AI 一次改很多文件时,提交前先拆 commit。
git diff --stat
git add -p
git commit -m "test(module): cover edge case"
git add -p
git commit -m "fix(module): handle edge case"
已经提交成一个大 commit,但还没 push:
git reset --soft HEAD~1
git add -p
已 push 后谨慎重写历史,先确认有没有人基于这个分支继续开发。
优先拆成这些类型:
不要把“修 bug + 大重构 + 格式化 + 依赖升级”放在同一个 commit。
Meta Sapling 的公开实践把 stack of commits 作为重要工作流,适合把大功能拆成多个连续的小变更。
AI 生成大 diff 后,也可以按这个思路整理:
commit 1: add failing test
commit 2: change implementation
commit 3: update docs
commit 4: remove obsolete helper
每个 commit 都要能单独解释,且顺序清楚。
当一个大 diff 超过单个 PR 的 Review 承载能力时,可以继续拆成 stacked PR。commit 拆分解决 PR 内部历史清楚的问题,stacked PR 解决多人 Review 和分层合入的问题。
Google 小 CL 和 Meta Sapling 的共同启发是:先让变更变小,再让 Review 变准。AI 改代码时,拆分的核心价值是把风险切回可判断范围。案例对照见 大厂工程实践决策图谱。