You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git提交异常:无论暂存哪些文件都会提交所有变更文件

解决Git提交时自动包含所有变更文件的问题

我碰到过不少开发者遇到和你一模一样的问题——明明只暂存了部分文件,提交时却把所有变更都带进去了,而且跨VS Code和Git Bash都复现,说明不是单一工具的问题,咱们一步步排查解决:

1. 检查Git全局/本地的commit.autoStage配置

这个配置是最常见的“元凶”:如果开启了它,Git会自动把所有未暂存的变更加入暂存区然后提交,完全跳过你手动暂存的步骤。

  • 先打开Git Bash,执行git config --global commit.autoStage,如果返回true,直接执行下面的命令关闭:
    git config --global commit.autoStage false
    
  • 还要检查当前仓库的本地配置(全局配置可能被仓库本地配置覆盖):
    git config --local commit.autoStage
    
    如果返回true,同样执行git config --local commit.autoStage false关闭

2. 确认暂存区状态是否符合预期

有时候你以为自己只暂存了目标文件,但实际操作可能有误:

  • 提交前一定要执行git status,仔细看输出里的两个区块:
    • Changes to be committed:这里是真正会被提交的文件
    • Changes not staged for commit:这里是未暂存的变更,正常提交不会包含它们
  • 如果发现所有变更都在暂存区,大概率是之前不小心执行了git add .或者git add -A,这时候可以用git reset HEAD -- filename.example取消特定文件的暂存,再提交测试

3. 检查VS Code的Git扩展自动暂存设置

VS Code的Git插件有几个容易踩坑的自动设置:

  • 打开VS Code设置(快捷键Ctrl+,),搜索git enableSmartCommit:这个选项开启后,会自动暂存所有变更并提交,直接关掉它
  • 再搜索git autoStage:确保这个选项也是关闭状态,它会自动暂存你修改的文件

4. 排查Git钩子脚本

自定义的Git钩子可能会偷偷帮你执行git add .这类命令:

  • 进入你的仓库目录,找到.git/hooks文件夹(这个文件夹默认隐藏,Windows下要开启显示隐藏文件)
  • 查看里面有没有pre-commit、prepare-commit-msg这类脚本文件,如果里面包含git add .或者git add -A的命令,这就是问题所在
  • 可以先把可疑脚本重命名(比如改成pre-commit.bak),然后再测试提交

5. 升级Git版本(可选但推荐)

你当前用的Git版本是2.16.1,已经是比较老的版本了,虽然你重装过,但旧版本可能存在一些已知的bug。建议升级到最新的稳定版Git(比如2.40.x以上),新版本修复了很多旧版本的兼容性和功能问题,说不定能直接解决这个异常。

验证方法

修改2-3个不同的文件,只暂存其中一个(比如git add test.txt),然后执行git commit -m "test partial commit",最后用git log --stat查看提交记录,确认只有你暂存的文件出现在提交里。

内容的提问来源于stack exchange,提问作者Yoshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:46:02