如何在 VSCode 中提交对文件的一些更改,而不是其他文件?

How can I commit some changes to a file, but not others, in VSCode?

VSCode 具有出色的 git 集成,但我找不到进行部分提交的方法。基本上,我希望能够 select 我的文件中的特定更改并在不暂存整个文件的情况下暂存它们。 git CLI、Github 本机应用程序和 Atom 插件支持此功能。

主要是在开票之前确保我没有遗漏任何东西。

  • 打开源代码管理视图,然后单击更改的文件以打开比较。

  • Select 您要暂存的台词。

  • 单击“...”,然后单击 Stage Selected Ranges

此选项已移至调色板:

shift+command+P 并输入 "stage selected ranges"

更新:2017 年 10 月: 在截至 2017 年 10 月的最新 VSCode(版本 1.18)中,您实际上可以非常轻松地安排特定线路,就像您会做的那样使用 git CLI git add -p。您只需从侧面单击编辑过的行,观察差异并应用或不应用。

⚡ Summing up everything in this post with a gif.

  1. 确保您在源代码管理视图中才能使用此功能
  2. Select代码范围
  3. 打开编辑器右上角的···(不是左侧git面板顶部的···
  4. 您也可以按 COMMAND (⌘) + K + COMMAND (⌘) + S 打开键盘快捷键并搜索 range,然后为此操作设置键盘快捷键。

和平! ✌️

使用交互式舞台。

命令 - git 添加 -p 这将向您显示文件,您可以在分开更改后选择要提交的文件

最初,我概述了可用的方法,但我认为这一点应该放在首位,因为它是最有用的:

我想出什么来让它更快

可以看到,主编辑器的命令面板(ctrl + shift + P)显示的“Git: Stage Selected Ranges”与“查看更改”界面中的热键相同,但是它实际上不起作用。有一段时间,我认为这是一个错误,但事实证明这是一个可配置的行为:单击设置按钮:

(或者只需转到 ctrl + K ctrl + S/文件 → 首选项 → 键盘快捷键并搜索 @command:git.stageSelectedRanges

...您会看到默认情况下“When”表达式是 isInDiffEditor,因此它不应该在普通编辑器中工作。因此,将 When 表达式更改为空:

要么保留默认的热键组合并在编辑器中使用它(我就是这么做的),要么将它设置为更短的组合(不是双重组合,我也会考虑这个)。盈利!

如果有什么不清楚或者您想了解其他选项,请点击此处

可用方法的初步概述

  • 基本方法是在界面中暂存选定范围以供查看更改:

    1. 开放源代码管理 (ctrl + shift + G)
    2. select 文件
    3. select 行应暂存(或将光标放在删除位前后的单行或多行)
    4. 打开“...”菜单和select“阶段选定范围”
  • 另一方面,您可以使用热键。默认值(在 v1.56.2 中)是 ctrl + K,然后是 ctrl + alt + S。要设置自定义组合键,请打开键盘快捷键(从文件 → 首选项或通过 ctrl + K 然后 ctrl + S)并找到 stageSelectedRanges(可能是 unstageSelectedRangesrevertSelectedRanges)

  • 不幸的是,上面提到的热键仅在“查看更改”界面中有效,您可能希望直接在代码编辑器中执行此操作。您可以通过另一个界面执行此操作:单击更改标签:

    然后是“舞台切换”按钮:

  • 尽管没有直接的 热键 从代码编辑器 进入 selected 范围 ,你可以转到 ctrl + shift + P(打开命令面板)然后键入“stage s”并选择“Git: Stage Selected Ranges”:

此外,当您查看要暂存的内容时,使用 Alt + F5 跳转到文件中的下一个更改非常方便。