git - 如何从当前版本和比最新版本更旧的版本之间的差异 View 编辑文件的当前版本?

标签 git visual-studio visual-studio-2017 diff

在 Visual Studio 中(如果您使用的是 git 存储库),您可以右键单击修改后的文件并选择“与未修改的比较”。在那里你可以看到一个差异,你可以在其中编辑文件的当前版本。 澄清一下:您可以在与最新提交相比的差异 View 中编辑源文件中当前未提交的更改。相比之下,在 diff View 中比较 2 个提交只会向您显示这些文件在您无法编辑的临时文件夹中的只读副本。

但是,当您查看当前修订版和某些旧修订版之间的差异时(通过按住 Ctrl 键单击并在右键单击菜单中选择“比较提交... ") 您无法编辑当前修订版中的文件。

在将任何旧版本(不仅仅是前一个版本)与当前版本进行比较时,有没有一种方法可以在 Visual Studio 的差异 View 中编辑当前版本文件?


旁注:开发人员讨厌的一个奇怪技巧是通过“保留更改”重置到所需的旧版本并进行提交,从而可以“与未修改的进行比较”,就好像它是以前的提交一样。但这是骇人听闻且不可取的。

最佳答案

不幸的是,当从 VS 2017 Git 历史工具窗口比较两个版本时,目前不支持这一点,即使其中一个版本是当前的 workdir 版本。我们目前也无法从 Changes 页面选择一个特定的版本来进行差异化。我会将其添加到我们的积压工作中,以供 future Visual Studio 版本考虑。

如您所见,有时可以从团队资源管理器中的 Git 更改页面编辑差异。以下是我们如何确定差异窗口是否可编辑的摘要。

  • 仅工作目录更改:
    • 使用 HEAD 区分工作目录,工作目录内容可在差异中编辑。
  • 仅分阶段更改:
    • 使用 HEAD 区分 workdir(因为 workdir 内容与索引匹配),workdir 内容可编辑,对 workdir 的更改不会自动暂存。
  • 暂存和工作目录更改:
    • 使用 HEAD 暂存,暂存内容是只读的。
    • Diff workdir with index (staged),workdir 内容是可编辑的。

希望这对您有所帮助,并感谢您提出这个问题。

关于git - 如何从当前版本和比最新版本更旧的版本之间的差异 View 编辑文件的当前版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49732495/

相关文章:

git - 显示二进制文件是从哪个 git commit 编译的

eclipse - 在 Eclipse 中将文件或文件夹添加到 Git 存储库

c# - 自动绑定(bind)重定向

visual-studio - 显示方法定义的键盘快捷方式(在 Visual Studio 2008 中)是什么?

Visual Studio 中的正则表达式查找和替换不起作用

linux - 依次传递两个变量

Git 修订列表 : exclude commits already included in a merge

c# - 在 MVC ASPX View 中设置断点

.net-core - 将 Apache Lucene.Net 4.8.0 与 .NET Standard 1.5 和 Visual Studio 2017 结合使用

visual-studio - 无法安装 Visual Studio 2017(结果代码 0x0、0x2)