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

如何在VS Code中仅提交已跟踪文件?

在VS Code中仅提交已跟踪文件的方法

我懂你的需求——想要在VS Code里实现和git commit -a完全一样的效果:只提交已跟踪文件的变更(包括「Changes to be committed」的暂存内容和「Changes not staged for commit」的未暂存已跟踪内容),但绝对不碰那些「Untracked files」对吧?下面给你几种实用的方法:

方法1:手动暂存已跟踪变更后提交

这是最直观的操作,完全在VS Code的源代码管理面板里完成:

  • 打开源代码管理面板(快捷键:Ctrl+Shift+G / Cmd+Shift+G)
  • 找到「Changes not staged for commit」区域,点击该区域顶部的+按钮(或者右键选择「Stage All Changes」),这样所有已跟踪的未暂存变更都会被移到「Changes to be committed」里
  • 最后点击「Commit Staged」按钮,输入提交信息即可——这样就只提交了已跟踪文件的变更,未跟踪文件会被留在原地

方法2:直接用集成终端执行git commit -a

既然你已经熟悉git commit -a命令,那直接在VS Code里用终端执行是最省心的:

  • 打开VS Code的集成终端(快捷键:Ctrl+ / Cmd+)
  • 输入命令:git commit -a -m "你的提交说明",回车执行就搞定了,效果和你在外部终端用的完全一样,自动暂存所有已跟踪的未暂存文件并提交,忽略未跟踪文件

方法3:自定义快捷键实现一键提交已跟踪文件

如果你不想每次都手动操作或敲命令,可以给VS Code设置一个专属快捷键,一键完成git commit -a的操作:

  • 打开命令面板(Ctrl+Shift+P / Cmd+Shift+P),搜索并打开「Preferences: Open Keyboard Shortcuts (JSON)」
  • 在打开的keybindings.json文件中添加以下配置(可以自定义快捷键,比如下面用的是Ctrl+Shift+C):
{
  "key": "ctrl+shift+c",
  "command": "git.commitAll",
  "args": {
    "includeUntracked": false
  }
}

保存后,按下你设置的快捷键,就能直接提交所有已跟踪文件的变更,不用管未跟踪的内容啦

顺便补充一下:VS Code默认的「Commit All」按钮之所以会提交所有三类内容,是因为它等价于执行git add . && git commit——会把所有未跟踪文件也一起暂存并提交,这和git commit -a的逻辑是不一样的,所以才会出现你遇到的差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:50:56