如何在当前版本和早于最新版本的版本之间编辑文件的当前版本?

use*_*322 8 git diff visual-studio visual-studio-2017

在Visual Studio中(如果您使用的是git存储库),可以右键单击已修改的文件,然后选择"与未修改比较".在那里你可以看到一个diff,你可以在其中编辑文件的当前版本.为了澄清:与最新提交相比,您可以在diff视图中编辑源文件中当前未提交的更改.相比之下,比较diff视图中的2个提交仅显示temp文件夹中这些文件的只读副本,您无法编辑这些副本.

但是当你在查看当前版本和一些旧版本之间的差异时(通过选择顶部提交和一个较旧的版本,使用Ctrl-单击并在右键单击菜单中选择"比较提交......"),无法编辑当前版本的文件.

有没有办法在将任何旧版本(不仅仅是前一版本)与当前版本进行比较时,在Visual Studio中的diff视图中编辑当前版本文件?


旁注:开发人员讨厌的一个奇怪的技巧是通过"保持更改"并进行提交重置为所需的旧版本,从而可以"与未修改比较",就好像它是先前的提交一样.但这是hacky和不受欢迎的.

Cha*_*d B 6

遗憾的是,当从VS 2017 Git History工具窗口中扩展两个版本时,目前不支持这种情况,即使其中一个版本是当前的workdir版本.我们目前还无法从"更改"页面选择用于执行差异的特定版本.我将把它添加到我们的待办事项中,以考虑将来的Visual Studio版本.

正如您所注意到的,差异有时可以从团队资源管理器中的Git Changes页面进行编辑.以下是我们如何确定diff窗口是否可编辑的摘要.

  • Workdir仅更改:
    • 带有HEAD的diff workdir,可在diff中编辑的workdir内容.
  • 仅分阶段更改:
    • 带有HEAD的Diff workdir(因为workdir内容匹配索引),workdir内容可编辑,对workdir的更改不会自动暂存.
  • 分阶段和workdir更改:
    • 与HEAD一起分阶段,分阶段内容是只读的.
    • 具有索引(暂存)的diff workdir,workdir内容是可编辑的.

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