1. 文档目标
这份文档专门解决一个真实开发中的高频问题:
- 为什么 Codex 一次性大改容易失控
- 为什么即使你会小步迭代,没有 Git 快照也仍然风险很大
- 如何把"小步推进"和"阶段提交"结合起来
- 如何让每一轮迭代都既可验证,又可回退
读完后,你应该能够:
- 用小步迭代方式推进复杂任务
- 知道每一轮迭代什么时候应该 commit
- 知道每类 commit 应该保存什么粒度
- 知道出了问题如何快速定位和回退
- 用这套方法处理功能开发、Bug 修复、重构和联调任务
2. 为什么小步迭代必须配合 Git commit
很多人已经知道不要让 Codex 一次改太大,但仍然会踩坑,因为只做了"分步",没有做"留痕"。
常见问题:
- 每一轮都在改,但没有中间快照
- 到最后发现问题时,不知道是哪一轮改坏了
- 想回退时只能手动一点点找回来
- 多轮修改混在一起,无法做清晰 review
所以:
- 小步迭代解决"控制修改范围"
- Git commit 解决"保留阶段状态"
两者一起用,才能真正形成安全闭环。
3. 这套组合方法的核心思想
可以把它理解成一句话:
每一轮只改一小步,每一小步都留下可回退的锚点。
这套方式强调 4 件事:
- 每轮目标收缩
- 每轮局部验证
- 每轮关键点留快照
- 最后统一收口
4. 小步迭代和 Git commit 的分工
小步迭代负责什么
- 控制每一轮改动规模
- 让问题更容易定位
- 让结果更容易验证
Git commit 负责什么
- 记录每轮结果
- 支持快速回退
- 支持差异对比
- 支持更清晰的 code review
图示
总目标
第一轮最小改动
局部验证
commit 留快照
第二轮小改动
再验证
再 commit
最终收口与提交
5. 什么时候必须做阶段性 commit
不是每敲一行代码都要 commit,但下面这些节点非常建议留快照。
5.1 关键修改前
如果即将开始高风险改动,先留一个"修改前快照"。
适合场景:
- 改事务
- 改 SQL
- 改公共组件
- 改复杂链路
5.2 完成一个最小可用版本后
当主链路已经初步打通时,非常适合先做一个 commit。
5.3 完成一轮局部验证后
如果这一轮已经验证通过,就应该把它固化下来。
5.4 从一个阶段切换到另一个阶段时
例如:
- 从后端改造切到前端展示
- 从功能实现切到测试补充
- 从 bug 修复切到回归验证
5.5 在开始下一轮较大调整前
哪怕你准备继续改,也建议先把当前稳定状态保存下来。
6. 什么样的 commit 粒度最合适
最理想的 commit 粒度通常是:
- 一个 commit 对应一个明确目标
- 这个目标有清晰说明
- 这个目标完成后可以验证
好的例子
feat: 打通 customerLevel 后端字段流转feat: 补充 customerLevel 分页筛选条件fix: 修复订单分页手机号筛选失效test: 补充订单筛选回归验证说明
不好的例子
updatemodify codefix bug and optimize and cleanup
问题在于:
- 看不出改了什么
- 回退时不清楚会丢掉哪部分
- review 时难以聚焦
7. 标准操作流程
- 明确总目标
- 拆成小步迭代轮次
- 执行第一轮最小改动
- 局部验证
- commit 留快照
- 进入下一轮改动
- 再验证再 commit
- 最终统一收口
8. 第一步:先定义总目标和轮次边界
不要一边改一边随意扩散,最好先明确:
- 总目标是什么
- 第一轮只做什么
- 第二轮只做什么
- 哪些内容后面再补
示例
总目标:
text
给会员资料管理增加 customerLevel 字段,并完成查询、展示和测试说明。
轮次拆分:
- 第一轮:只做后端字段流转
- 第二轮:补分页筛选
- 第三轮:补前端展示
- 第四轮:补测试与联调清单
9. 第二步:每轮只做一个主要目标
每轮建议只改一个主要维度:
- 只改对象和接口
- 只改 Service 逻辑
- 只改 SQL / XML
- 只改前端展示
- 只补测试和文档
这样做的好处是:
- 方向更清晰
- 出问题更好定位
- commit 更容易写得准确
10. 第三步:每轮结束都做局部验证
验证不是最后一次性做,而是每轮都做。
局部验证可以检查
- 改动范围是否符合预期
- 主链路是否打通
- 是否引入明显异常
- 是否值得进入下一轮
验证通过后再 commit
这是关键原则:
先验证,再提交稳定点。
11. 第四步:用 commit 把"稳定点"固定下来
把 commit 理解成"这一轮已确认可保留"的标记。
推荐提交时机
- 第一轮最小可用版本通过后
- 每轮主要目标完成后
- 每次从一个阶段切到另一个阶段前
推荐提交信息结构
text
类型: 本轮目标
例如:
text
feat: 打通 customerLevel 后端保存与查询链路
feat: 增加 customerLevel 分页筛选
feat: 增加 customerLevel 前端列表与表单展示
test: 补充 customerLevel 联调与回归清单
12. 第五步:不要把无关优化混进当前轮
这是很多人最容易犯的错误。
错误示例
本来这轮只想修手机号筛选问题,结果顺手:
- 抽了一个公共方法
- 重命名了几个变量
- 调整了另一个查询逻辑
- 改了日志格式
为什么危险
- 一旦出问题,不知道是哪部分引起的
- 当前 commit 不再单纯
- 回退时会连无关修改一起丢掉
正确做法
- 当前轮只解决当前轮目标
- 其他优化放到后续独立轮次
13. 第六步:最终统一收口
所有轮次完成后,再做一次总检查。
收口时检查什么
- 总目标是否达成
- 所有轮次是否已打通
- 是否还有遗漏验证
- commit 是否清晰可读
- 是否存在无关扩散修改
收口提示词模板
text
请基于前面几轮小步迭代结果,帮我做最终收口检查。
请输出:
1. 当前各轮完成情况
2. 是否还缺关键步骤
3. 是否已经满足总目标
4. 最终验证清单
5. 当前提交粒度是否合理
14. Java / Spring Boot 项目实战实例
场景
会员资料管理需要新增 customerLevel 字段,并完成:
- 新增与编辑支持
- 分页筛选支持
- 列表和表单展示
- 联调和测试说明
推荐组合做法
第零步:先留修改前快照
如果当前代码处于稳定可运行状态,可以先做一个起始快照。
示例 commit:
text
chore: customerLevel 需求开发前基线快照
第一轮:只打通后端字段流转
目标:
- ReqVO / RespVO / SaveVO 增加字段
- Service 保存与查询链路支持字段
完成并验证后提交:
text
feat: 打通 customerLevel 后端字段流转
第二轮:补分页筛选
目标:
- ReqVO 增加筛选项
- Mapper / XML 支持筛选条件
完成并验证后提交:
text
feat: 增加 customerLevel 分页筛选支持
第三轮:补前端展示
目标:
- 列表显示字段
- 表单支持新增和编辑
完成并验证后提交:
text
feat: 增加 customerLevel 前端展示与编辑能力
第四轮:补联调和测试清单
目标:
- 输出联调清单
- 输出功能测试与回归建议
完成后提交:
text
test: 补充 customerLevel 联调与回归清单
图示流程
基线快照
第一轮:后端字段流转
验证通过后 commit
第二轮:分页筛选
验证通过后 commit
第三轮:前端展示
验证通过后 commit
第四轮:测试与联调
最终收口
15. Bug 修复实战实例
场景
订单分页接口按手机号筛选时返回空数据。
推荐组合做法
第零步:先保留当前状态
如果当前分支还有其他稳定改动,先保留快照,避免后续修 bug 时把其他状态弄乱。
第一轮:先定位,不改代码
text
先不要改代码,先帮我定位手机号筛选相关链路与最可能根因。
这一轮通常不一定 commit,但会形成清晰分析结论。
第二轮:做最小修复
text
请只修手机号筛选失效问题,不做无关优化。
验证通过后提交:
text
fix: 修复订单分页手机号筛选失效
第三轮:补回归验证
text
请补正常筛选、组合筛选和空参数场景的回归建议。
如果补了测试文件、测试文档或验证脚本,可以继续单独提交:
text
test: 补充订单分页筛选回归验证
这样做的价值
- 修复和回归说明分离
- 一旦修复方案有问题,可以只回退修复 commit
- 回归内容也能单独 review
16. 重构任务实战实例
场景
某个 Service 类逻辑过长,准备做局部重构。
推荐组合做法
- 第一轮只抽离最明显的重复逻辑
- 验证行为不变后提交
- 第二轮再处理第二块重复逻辑
- 不要一轮内重构整个类
推荐提交示例
text
refactor: 抽离订单计算公共方法
refactor: 拆分订单校验逻辑
原因
重构最怕"看起来都合理,但最后行为变了"。小步 + commit 可以显著降低这种风险。
17. 常见误区
17.1 误区一:只做小步,不做 commit
问题:
- 出问题仍然难以回退
17.2 误区二:commit 太粗
问题:
- 一次提交太多内容,失去阶段意义
17.3 误区三:commit 太碎且没有意义
问题:
- 提交很多,但每个提交都看不出阶段目标
17.4 误区四:验证之前就 commit
问题:
- 把不稳定状态也固定下来
17.5 误区五:无关优化混进当前轮
问题:
- 当前轮目标失焦,回退和 review 都很困难
18. 注意事项
- 每轮只推进一个主要目标
- 每轮结束先验证,再 commit
- commit 信息要能说明"这一轮做了什么"
- 不要把多个不相关修改混进同一个 commit
- 高风险改动前先保留基线快照
- 最终收口时检查提交粒度是否清晰
19. 高质量提示词模板
19.1 通用模板
text
请按"小步迭代 + 阶段留快照"的方式帮我推进这个任务。
总目标:
当前轮目标:
约束:
1. 只处理当前轮目标
2. 不做无关优化
3. 修改后先给验证建议
4. 如果这一轮稳定,请提示我适合形成一个阶段提交
19.2 功能开发模板
text
请帮我按小步迭代方式完成这个功能。
要求:
1. 先给出建议轮次
2. 当前轮只做最小可用改动
3. 修改后说明是否适合形成一次独立 commit
4. 再给下一轮建议
19.3 Bug 修复模板
text
请按"先定位 -> 再最小修复 -> 再回归建议"的方式处理这个 bug。
要求:
1. 不做无关重构
2. 修复后告诉我这一轮是否适合单独提交
3. 再补下一轮验证建议
20. 团队落地建议
如果你想把这套方式推广到团队里,建议这样做:
- 把"小步优先"写入团队 AI 协作规范
- 把"一个 commit 对应一个阶段目标"写入提交规范
- 复杂任务先给出轮次规划
- 要求关键轮次先验证再提交
- 在 code review 时检查提交粒度是否清晰
21. 一句话总结
Codex 小步迭代 + Git commit 保命技巧的核心,不是让开发更慢,而是让每一轮修改都更可控、更可验证、更可回退。
22. 快速上手清单
- 先定义总目标
- 拆出几轮小步迭代
- 高风险改动前先保留基线快照
- 每轮只做一个主要目标
- 每轮结束先局部验证
- 验证通过后再 commit
- 最后统一收口并检查提交粒度