使用 Codex 修改真实项目时,有时会遇到一种很奇怪的情况:
Codex明明说代码已经改好了,但打开 Git 一看,却看不到任何变化。
常见表现包括:
- Codex提示“已修改文件”,git status 却是干净的;
- 编辑器里能看到新代码,Git Diff却没有内容;
- 自己当前分支没有变化,切换后才发现代码在另一个分支;
- Agent已经提交代码,但工作区看起来完全没改;
- 使用Worktree后,找不到Codex实际修改的位置。
这种问题很多时候不是代码没有修改,而是:
你查看Git状态的位置,和Codex真正工作的仓库、分支或工作区不是同一个。
一、先确认当前到底在哪个仓库
这是最容易忽略的一步。
例如电脑里同时存在:
/project/app
/project/app-copy
/project/app-test
Codex在:
/project/app-test
修改。
你却在:
/project/app
执行:
git status
当然看不到任何变化。
可以先确认当前目录:
pwd
再检查Git仓库根目录:
git rev-parse –show-toplevel
先确定:
Codex和你看的确实是同一个仓库。
二、检查当前分支是不是同一个
如果仓库没有问题,再看分支。
执行:
git branch –show-current
或者:
git status
假设你现在查看的是:
main
但Codex实际工作在:
fix/user-login
那么main分支当然不会显示它的修改。
尤其是Agent自动创建分支以后,这种情况更容易出现。
所以发现代码“消失”时,可以先运行:
git branch
看看当前到底有哪些分支。
三、Worktree最容易让人看错工作目录
现在一些AI开发工作流会使用 Git Worktree,让不同任务拥有独立工作区。
例如:
/project/app
/project/app-agent-1
/project/app-agent-2
它们可能属于同一个Git仓库,但分别对应不同分支。
这时候Codex可能在:
/project/app-agent-1
完成修改。
而开发者仍然打开:
/project/app
于是就会感觉:
Codex明明说改了,为什么我这里完全没有?
可以使用:
git worktree list
查看当前仓库有哪些Worktree,以及分别对应什么分支。
四、git status干净,不代表没有新代码
还有一种情况:
Codex已经把修改提交了。
例如它完成:
修改代码
↓
git add
↓
git commit
这时候再运行:
git status
看到的可能是:
nothing to commit, working tree clean
这并不代表修改消失了。
只是说明:
当前代码已经进入Commit,不再属于未提交变化。
可以运行:
git log –oneline -5
看看最近有没有新的提交。
再通过:
git show
检查最近一次Commit到底修改了什么。
五、为什么git diff也可能什么都看不到?
很多人习惯运行:
git diff
然后发现输出为空,就认为:
Codex没改东西。
但 git diff 默认主要查看:
工作区中尚未暂存的变化。
如果文件已经执行:
git add
变化进入暂存区以后,需要查看:
git diff –cached
如果已经提交,则需要使用:
git show
所以不同Git状态,要用不同方式查看。
六、文件可能被修改后又恢复了
Agent在执行任务时,有时会:
修改方案A
↓
测试失败
↓
恢复
↓
尝试方案B
如果最后判断某个修改不需要,它可能把文件恢复到原状态。
你看到任务过程中“修改过”,并不代表最终Diff一定保留。
这种情况下可以重点看:
最终结果,而不是中间操作。
如果最终:
git status
确实干净,同时也没有新Commit,那么这些中间修改可能已经被回退。
七、还要注意是不是看错了同名文件
大型项目里经常存在:
src/config.ts
legacy/config.ts
tests/config.ts
Codex说:
已修改config.ts。
但你打开的是另一个同名文件。
所以涉及多目录项目时,最好确认完整路径。
例如:
src/config.ts
而不是只确认:
config.ts
查看Diff时也可以直接指定文件:
git diff — src/config.ts
八、一个比较稳定的排查顺序
以后遇到Codex说已经修改,但Git看不到变化,可以按照这个顺序:
第一步:确认仓库。
git rev-parse –show-toplevel
第二步:确认分支。
git branch –show-current
第三步:查看Worktree。
git worktree list
第四步:查看工作区。
git status
第五步:查看暂存变化。
git diff –cached
第六步:检查最近提交。
git log –oneline -5
通常很快就能定位代码到底在哪里。
九、可以让Codex结束任务时直接给出Git状态
为了避免以后重复排查,可以在任务要求里加一句:
完成后请告诉我:
1. 当前工作目录;
2. 当前Git分支;
3. 修改了哪些文件;
4. 是否已经git add;
5. 是否已经提交;
6. 如果提交了,给出Commit信息。
这样任务完成以后,你第一眼就知道:
代码在哪里、处于什么Git状态。
比只告诉你:
已经完成修改。
清楚很多。
最后
Codex明明改了代码,Git里却看不到变化,并不一定代表修改失败。
真正需要检查的是:
仓库、分支、Worktree和提交状态。
尤其是AI Agent开始使用独立分支、独立工作区以后:
“代码在哪里被修改”
会变得和:
“代码修改了什么”
同样重要。
遇到这种情况,不要马上让Codex重新修改一遍。
先通过:
仓库 → 分支 → Worktree → Status → Commit
把Git状态确认清楚。
很多所谓“代码不见了”的问题,实际上只是看错了位置。
持续更新 Codex、大模型开发与 AI 编程实战内容,更多技术内容和稳定订阅渠道欢迎搜索关注「仙逆GPT」。


