如何在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
相关产品推荐
相关产品推荐

