Git报nothing to commit, working tree clean但有代码待提交的解决方法
返回信息含义
你操作时拿到的是Git原生的状态返回,逐行解释:
On branch develop:当前操作的本地分支为developYour branch is up to date with 'origin/develop':本地develop分支和绑定的远程origin仓库下的develop分支提交记录完全同步,没有未推送的本地提交,也没有需要拉取的远程更新nothing to commit, working tree clean:Git在当前工作区没有检测到任何已追踪文件的内容变更,不存在可以提交的修改。
排查&解决步骤
你确认自己改了代码但Git无检测结果,按以下优先级排查:
- 确认文件已保存
VS Code中未保存的文件标签页会显示白色圆点标记,未保存的改动仅存在于编辑器内存中,不会写入磁盘,Git无法读取到这部分改动,按Ctrl+S(macOS系统按Cmd+S)保存所有文件后再重试提交。 - 确认改动的文件属于当前打开的仓库
多项目并行开发时很容易出现改错仓库的情况:你修改的是其他本地项目下的同名文件,当前VS Code加载的仓库目录下的文件实际没有任何改动。可以在VS Code集成终端执行pwd(Windows系统执行cd)查看当前终端对应的工作目录,和你修改的文件所在路径核对是否一致。 - 确认文件未被
.gitignore规则忽略
如果改动的文件路径匹配项目中.gitignore文件配置的忽略规则,Git不会追踪该文件的任何变更,自然不会识别为待提交内容。在终端执行git check-ignore -v 改动文件的完整路径,如果命令返回匹配的忽略规则行,就说明该文件被忽略了,调整对应忽略规则即可正常追踪改动。 - 确认改动没有被误撤销
如果之前在源代码管理面板点过「放弃更改」,工作区的对应改动会被直接回滚到上一次提交的版本,你记忆中的修改已经被覆盖,可以右键点击对应文件,选择「打开时间线」查看VS Code本地保存的文件历史,找回丢失的改动。 - 检查是否为文件权限变更导致的误判
如果你只修改了文件的读写、可执行权限,没有修改实际代码内容,Git默认配置下可能不会识别为有效变更,执行git config core.fileMode false关闭文件权限变更检测即可避免这类误判。
快速校验方法
打开你确认修改过的文件,随便加一行测试注释(比如// test),保存后查看源代码管理面板,如果此时文件出现在更改列表中,执行git status也能看到待提交记录,说明之前的问题一定是上面提到的某一种场景,逐一对应排查即可。
内容的提问来源于stack exchange,提问作者Baba
相关产品推荐
相关产品推荐

