【问题标题】:Stage single deleted lines in Visual Studio Code在 Visual Studio Code 中暂存单个已删除的行
【发布时间】:2019-12-04 13:52:38
【问题描述】:

我正在使用 Visual Studio Code 及其集成的版本控制。我想将一组已删除的行拆分为两个不同的提交。

我知道“Stage Selected Ranges”选项,但据我所知,我无法选择已删除的行。

有办法实现吗?

谢谢

【问题讨论】:

  • 我试过Stage Selected Ranges,它在删除行时效果很好。您可以使用鼠标或Shift+Down Arrow 选择已删除的行。
  • @ElpieKay 看起来Stage Selected Ranges 选项仅适用于右侧的选择,但就我而言,我必须选择左侧的行。如果我选择前 4 行,然后单击 Stage Selected Ranges 选项,则没有任何反应。
  • 我选择了左侧的行。
  • 我知道你问的是 vscode,而不是命令行,但为了它的价值,git add -p <filename> 会让你做你想做的事。
  • @ElpieKay 现在我选择了从 13 到 17 的行,然后是 CMD+CTRL+P 和 Stage Selected Ranges,但是从 13 到 22 的所有块都添加到了阶段。我不知道,也许我做错了什么。

标签: git visual-studio-code version-control


【解决方案1】:

恐怕没有办法用 VS Code 做你想做的事。

这不是 VS Code 问题,而是git 问题。 git 告诉 VS Code 将这些连续更改视为一个大块,因此如果 git 不能拆分它,那么 VS Code 也不能。

尝试在命令行上运行git add -p,您可能会看到git 将这些更改视为一大块,因为它们彼此非常接近。尝试在git add -p 提示符上传递s,如果它显示“抱歉,无法拆分此块”,那么 VS Code 也不能。

我认为唯一的方法是使用git手动编辑补丁文件。
见:Can I split an already split hunk with git?

有人要求 VS Code 支持像这样的补丁文件编辑:https://github.com/Microsoft/vscode/issues/69891,回复是:

我们尝试保持 VS Code 精简,并且我们认为您的功能 ask for 非常适合 VS Code 扩展。也许您已经在VS Code Marketplace 中找到了适合您的。

AFAIK,唯一与补丁相关的扩展是Git Patch。它允许您从暂存/未暂存的更改创建补丁,但它不允许您选择要添加到补丁的更改。您必须手动编辑补丁,放弃更改,然后一一应用补丁。这与执行git add -p 然后传递e 几乎相同。

【讨论】:

  • 感谢您的回答,我赞成。但是在过去,我使用了 Source Tree,并且能够毫无问题地做到这一点(我的意思是在同一个大块中选择多行并暂存它们)
  • 我认为 SourceTree 会在内部为您创建和编辑补丁文件。我记得它有自己的补丁文件功能。
  • Git 扩展也可以让您轻松做到这一点。
猜你喜欢
  • 1970-01-01
  • 2020-12-21
  • 1970-01-01
  • 2018-09-16
  • 2016-10-25
  • 2019-01-08
  • 2021-12-02
  • 2016-11-25
  • 2012-09-04
相关资源
最近更新 更多