Codex 改错后,怎样用 Git 只恢复一个文件

一个文件改坏了,其他文件里还有自己没提交的工作,怎样只撤回目标文件?先检查 Git 基线和修改范围,再决定是否做整文件恢复。

下面的命令会覆盖目标文件的工作区内容。只在确认该文件里的未提交改动都准备放弃、而 HEAD 确实是正确版本时使用。

先看差异与暂存区

在仓库目录执行:

1
2
3
git status --short
git diff HEAD -- check_products.py
git diff --cached --name-only

第三条帮助确认有没有已经暂存的内容。原演示没有暂存改动,check_products.py 里只有准备撤回的模拟误改,最后一次提交是正确基线。

如果同一文件里还混着要保留的修改,先逐块核对并留存它们,不要直接套下面的整文件命令。

只恢复指定文件的工作区

1
git restore --source=HEAD --worktree -- check_products.py

--source=HEAD 明确恢复来源,--worktree 指向工作区,-- 后面只列目标文件。它不会替你判断代码好坏,也不会把已经提交的误改自动找回到正确版本。Git restore 官方说明

随后再看 git status --short、目标文件差异,并运行相关测试。其他文件还在不代表内容一定没变,重要保留项也要核对。

原演示验证了哪些结果

2026年10月14日,在 Windows 的隔离 Git 仓库里,人为把“数值必须大于0”改为“允许0”,模拟错误。测试出现2处失败;另一个文件有未提交补充,还有一个未跟踪草稿。

恢复目标文件后,内容与基线一致,6项测试通过。其他补充与草稿保留,内容校验一致。这是教学模拟,不是 Codex 真实失败记录。

交给 Codex 时,可以先让它只读检查:

1
2
3
列出目标文件准备撤回的内容、恢复来源和必须保留的修改。
先不要执行恢复;确认范围后再处理。
完成后运行相关检查,报告保留项是否改变。

没有正确 Git 基线、目标文件混有有价值的修改,或错误已提交时,需要另行选择恢复办法。博客于2026年10月27日整理,未重新执行恢复实验。