Codex 怎么配合 Git 使用?修改前、修改后、回滚前分别该做什么
Codex 怎么配合 Git 使用?修改前、修改后、回滚前分别该做什么
用 Codex 改代码时,我最强烈的建议是:一定要配合 Git 使用。
Codex 很适合帮我们读代码、改代码、排查 bug、补文档、做 review。但只要它开始修改文件,问题就来了:你要知道它改了什么、哪些改动可以留下、哪些改动应该撤掉、出了问题能不能回到修改前。
这时候 Git 就很重要。
OpenAI 官方文档里也建议,在让 Codex 开始任务前后创建 Git checkpoint,方便后续回退;Codex 的 code review 功能也依赖 Git 仓库里的 diff 来检查改动。简单说,Git 是你和 Codex 协作时的“安全绳”。
这篇文章就按实际使用流程讲清楚:
修改前应该做什么
-> Codex 修改过程中怎么看 diff
-> 修改后怎么检查和提交
-> 回滚前应该怎么判断
一、为什么 Codex 一定要配合 Git
如果你只是让 Codex 解释代码,不一定需要 Git。
但只要你让它做这些事,就建议先准备好 Git:
- 修改业务代码
- 重构模块
- 新增文件
- 删除无用逻辑
- 调整依赖和配置
- 批量改文档
- 修复 bug
原因很简单:Codex 可以帮你做事,但你仍然需要判断它做得对不对。
Git 能让你看到完整改动,也能让你在不满意时撤回。
我自己的习惯是:
没有 Git,不让 Codex 大改。
工作区不干净,不让 Codex 直接动手。
任务太大,不让 Codex 一次做完。
二、修改前:先确认工作区是否干净
第一步永远是看状态。
git status
如果输出里有 modified、deleted、untracked,就说明当前工作区已经有改动。
这时候先别急着让 Codex 修改。你要先判断这些改动是谁做的:
- 是你刚才手动改的
- 是上一轮 Codex 改的
- 是编辑器自动格式化的
- 是临时文件或构建产物
如果你在一个已经很乱的工作区里继续让 Codex 改,后面很容易分不清“哪些是它改的,哪些是原本就有的”。
三、修改前:最好新建一个分支
如果任务稍微复杂一点,建议单独开分支。
git switch -c codex/fix-login-error
分支名可以按任务来起:
codex/fix-login-error
codex/add-readme
codex/refactor-auth
codex/update-api-client
这样做的好处是:
- 当前任务有独立边界
- 不会直接污染主分支
- 后续可以单独提交、单独回滚
- 如果改坏了,直接丢弃这个分支也更轻松
如果你不想建分支,至少也要保证当前分支已经有一个干净的提交点。
四、修改前:把已有改动先处理掉
如果 git status 显示有未提交改动,通常有三种处理方式。
方式一:先提交
如果这些改动已经完成,可以先提交:
git add .
git commit -m "保存当前工作进度"
然后再让 Codex 开始新任务。
方式二:先 stash
如果这些改动还没完成,但又想临时放起来,可以用:
git stash push -m "临时保存修改"
后面需要恢复时再看:
git stash list
git stash show -p stash@{0}
git stash apply stash@{0}
Git 官方文档里对 stash 的描述很直接:它适合临时保存当前工作目录和暂存区状态,然后让工作区回到干净状态。
方式三:先开新 worktree
如果你手头的改动不能动,但又想让 Codex 做另一个任务,可以考虑单独开一个 worktree。
这个方式更适合熟悉 Git 的用户。它的好处是:你可以给 Codex 一个干净目录,让它只在那个目录里做当前任务。
五、给 Codex 的第一个提示词:先看状态,不要动手
在真正修改前,可以先这样问:
请先检查当前项目的 Git 状态,不要修改任何文件。
告诉我:
1. 当前分支是什么
2. 是否有未提交改动
3. 是否有未跟踪文件
4. 是否适合开始新的修改任务
这个提示词很实用。
它能让 Codex 先帮你看一眼当前现场。
如果状态不干净,你可以继续让它解释:
请根据当前 Git 状态,帮我判断哪些文件可能是本次任务无关改动。
不要修改文件,只做分析。
六、修改中:让 Codex 小步提交思路,而不是一次改到底
不要一上来就说:
帮我重构整个登录模块。
更稳的方式是拆成三步。
第一步,定位:
请先定位登录模块相关文件,不要修改代码。
列出相关组件、接口调用、状态管理和错误处理位置。
第二步,方案:
请给出最小修改方案。
要求说明准备修改哪些文件、每个文件改什么、可能有什么风险。
暂时不要动手。
第三步,执行:
可以按方案修改。
只修改刚才列出的文件。
不要做无关优化。
修改后告诉我实际改了哪些文件。
这样 Git diff 会更清楚,后续 review 和回滚也更容易。
七、修改中:随时看 diff
Codex 改完一轮后,不要急着继续给新任务。
先看 diff。
看所有改动概览:
git diff --stat
看具体未暂存改动:
git diff
看已经暂存的改动:
git diff --staged
Git 官方文档里说明,git diff 可以查看工作区相对于暂存区的变化,git diff --staged 则用于查看已经暂存、准备提交的变化。
如果你只想看某个文件:
git diff -- src/pages/Login.tsx
这个习惯非常重要。
Codex 说它只改了 A 文件,但你最好自己用 Git 再确认一次。
八、修改后:让 Codex 写变更摘要
修改完成后,可以让 Codex 做一次总结:
请总结本轮修改:
1. 修改了哪些文件
2. 每个文件改了什么
3. 为什么这样改
4. 是否存在风险点
5. 如何手动验证
然后你再对照:
git diff --stat
git diff
如果 Codex 的总结和 Git diff 对不上,就要提高警惕。
九、修改后:先 review,再提交
如果你用的是支持 /review 的 Codex 环境,可以让它 review 当前改动。
/review
也可以手动写:
请 review 当前未提交改动。
重点检查:
1. 是否有回归风险
2. 是否有边界情况遗漏
3. 是否有无关修改
4. 是否有潜在安全问题
5. 是否需要补测试
OpenAI 官方文档说明,Codex 可以 review uncommitted changes、commit 或 base branch,并且 review 过程不会修改工作区。这个特性很适合提交前检查。
十、修改后:分批暂存,不要无脑 add .
如果改动很小,git add . 问题不大。
但如果 Codex 改了多个文件,建议分批暂存:
git add src/pages/Login.tsx
git add src/utils/auth.ts
如果你想更精细一点,可以用:
git add -p
这样可以按 hunk 选择要提交的内容。
为什么不建议长期无脑 git add .?
因为它可能把这些东西也加进去:
- 临时文件
- 日志文件
- 本地配置
- 调试代码
- Codex 顺手生成但你不需要的文件
提交前再看一次:
git diff --staged
确认没问题后提交:
git commit -m "fix: improve login error message"
十一、回滚前:先判断你要撤的是哪一种改动
回滚不是一个命令解决所有问题。
你先要判断自己要撤掉的是什么。
| 场景 | 建议操作 |
|---|---|
| 某个文件的未暂存修改不想要了 | git restore <file> |
| 某个文件已经暂存,但想取消暂存 | git restore --staged <file> |
| 想撤掉某个新文件 | 先确认文件内容,再手动删除 |
| 想撤掉本次 Codex 全部未提交修改 | 先看 git diff,再逐个 restore |
| 已经提交了,但还没推送 | 视情况新建修正提交,或用 reset |
| 已经推送了 | 更建议用 git revert 生成反向提交 |
我不建议新手一上来就复制危险命令。
尤其是 git reset --hard 和 git clean,它们会丢弃大量本地内容,除非你非常确定,否则不要随手用。
十二、回滚前:让 Codex 先解释,不要让它直接删
如果你不确定该怎么撤,可以先这样问 Codex:
请根据当前 Git diff,判断如果我要撤回本次修改,应该撤哪些文件。
不要执行任何回滚命令,只给我建议。
再让它具体一点:
请把当前修改分成三类:
1. 建议保留
2. 可以撤回
3. 需要我人工确认
不要修改文件。
这一步能避免你一冲动把有用改动也删掉。
十三、一个安全的回滚流程
如果你想撤掉 Codex 的某次修改,可以按这个顺序来:
1. git status
2. git diff --stat
3. git diff
4. 让 Codex 解释哪些改动属于本次任务
5. 只 restore 明确不要的文件
6. 再次 git diff 确认结果
对应命令大概是:
git status
git diff --stat
git diff
git restore src/pages/Login.tsx
git diff --stat
重点是:先看,再撤。
不要在没看 diff 的情况下直接清空所有修改。
十四、一个完整示例:让 Codex 修登录报错
假设你要让 Codex 修登录失败提示。
第一步:准备 Git 环境
git status
git switch -c codex/fix-login-message
第二步:让 Codex 先定位
请先定位登录失败提示相关代码,不要修改任何文件。
告诉我相关页面、接口调用和错误处理分别在哪里。
第三步:让 Codex 给方案
请给出最小修改方案。
目标:登录失败时展示更明确的错误提示。
要求:不改变登录接口,不影响注册页面。
暂时不要修改代码。
第四步:允许修改
可以按方案修改。
只修改登录页面和错误提示相关文件。
不要做无关重构。
第五步:检查 diff
git diff --stat
git diff
第六步:让 Codex review
请 review 当前修改。
重点检查是否影响正常登录、注册跳转、表单校验和错误提示展示。
第七步:提交
git add src/pages/Login.tsx
git commit -m "fix: improve login error message"
这样一套下来,你会非常清楚:
- 任务从哪里开始
- Codex 改了什么
- 改动有没有越界
- 如果出问题怎么回退
十五、适合收藏的提示词模板
修改前
请先检查当前 Git 状态,不要修改任何文件。
告诉我当前分支、未提交改动、未跟踪文件,以及是否适合开始新任务。
修改中
请只完成当前任务,不要做无关优化。
如果发现需要修改额外文件,请先说明原因,等我确认。
修改后
请总结本轮修改:
1. 改了哪些文件
2. 每个文件改了什么
3. 有哪些风险
4. 如何验证
回滚前
请根据当前 Git diff,判断哪些改动应该保留,哪些可以撤回,哪些需要人工确认。
不要执行任何回滚命令。
十六、总结
Codex 和 Git 搭配起来,真正的价值不是“让 AI 随便改代码”,而是让整个过程可控:
修改前有 checkpoint
修改中能看 diff
修改后能 review
不满意能回滚
最终能提交成清晰 commit
我现在用 Codex 的基本原则是:
- 先看
git status - 复杂任务先开分支
- Codex 先分析,再修改
- 改完先看 diff
- 提交前让它 review
- 回滚前先让它解释改动
这样用起来会稳很多,也更像一个正常的开发协作流程。
P.S. 我自己的AI中转站正在招募试用用户,感兴趣可以随时评论区私信交流
参考资料
- Codex CLI: https://learn.chatgpt.com/docs/codex/cli
- Codex Code Review: https://learn.chatgpt.com/docs/code-review
- Codex Best Practices: https://learn.chatgpt.com/guides/best-practices
- Git Cheat Sheet: https://git-scm.com/cheat-sheet
- Git diff documentation: https://git-scm.com/docs/git-diff
- Git stash documentation: https://git-scm.com/docs/git-stash
更多推荐




所有评论(0)