最可能原因是未填写提交信息,VSCode不会报错而是静默卡住;解决方法是手动输入提交信息或关闭“Use Editor As Commit Input”选项。

提交按钮卡在“提交中”不动,最可能是因为没填提交信息
VSCode 不会像命令行 git commit 那样明确报错“please enter a commit message”,而是静默卡住——看起来像崩溃,其实是它在等你输入。这个行为不是 bug,是设计缺陷:它默认启用 Use Editor As Commit Input,但没做空消息校验。
解决方法很简单:在 Source Control 面板顶部的输入框里敲一行文字,比如 feat: 添加用户登录接口,再点提交按钮。如果还不行,去设置里把 Use Editor As Commit Input 选项取消勾选(路径:设置 → 搜索该关键词 → 取消复选框)。
常见错误现象:
- 点击提交后,界面无响应,进度条一直转,但控制台和 Git 输出都为空
- 右下角状态栏显示“Running Git: commit...”,持续数十秒以上
- 关掉面板重开,输入框内容还在,说明根本没触发 commit 流程
大量文件 stage 或提交时卡顿,别全量操作
VSCode 内置 Git 扩展对每个待提交文件都要做 diff、状态刷新、图标渲染,几百个文件一起处理,UI 线程直接被拖垮。这不是你电脑慢,是它没做分片处理。
实操建议:
- 手动勾选部分文件(比如只选
src/api/下的改动),右键 →Stage Selected Ranges - 用终端执行
git add src/api/或git add -p交互式暂存,再回 VSCode 提交 - 确保
.gitignore里已包含node_modules/、dist/、*.log,否则这些文件也会被纳入索引和 diff
性能影响:跳过 1000+ 个 node_modules 文件,可让 stage 时间从 20s 降到 1s 内。
插件和文件监听是后台卡顿的隐形推手
GitLens、ESLint、Prettier 这类扩展默认监听整个工作区,一有文件变化就触发分析或格式化。尤其在含 node_modules 的项目里,它们会让 VSCode 主线程频繁阻塞。
排查步骤:
- 运行
code --disable-extensions启动干净环境,测试提交是否流畅 - 若变快,打开命令面板 → 输入
Developer: Show Running Extensions,看哪个扩展内存/CPU 占用高 - 在
settings.json中配置files.watcherExclude,排除无关目录:
{
"files.watcherExclude": {
"**/node_modules/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/.git/**": true,
"**/logs/**": true
}
}
注意:**/ 是必须的通配写法,写成 node_modules/ 无效;改完需重启工作区才生效。
提交失败却没报错?检查 Git 安全目录和 CLI 路径
VSCode 内置 Git 和系统 Git 不一致,或者项目路径未被 Git 认为“安全”,会导致提交静默失败。典型表现是:点了提交、输完消息、按钮变灰、但文件状态不变,也无任何提示。
验证方式:
- 终端进项目根目录,执行
git commit -m "test",看是否报fatal: unsafe repository - 若报错,运行
git config --global --add safe.directory /your/project/path - 检查 VSCode 设置里
git.path是否指向正确的 Git 可执行文件(比如/usr/bin/git或C:\Program Files\Git\bin\git.exe)
容易忽略的一点:某些企业网络策略会拦截 VSCode 调用 Git 的子进程,此时只能靠终端命令兜底——git add . && git commit -m "msg" 永远是最稳的退路。


















