欢迎光临
我们一直在努力

Codex明明改了代码,为什么Git里看不到变化?分支、工作区与提交状态排查

使用 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」。

赞(0)
未经允许不得转载:171主机测评 » Codex明明改了代码,为什么Git里看不到变化?分支、工作区与提交状态排查
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址