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

时间:2018-04-09 12:01:50

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

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

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

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

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

2 个答案:

答案 0 :(得分:6)

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

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

  • 仅限Workdir更改:
    • 使用HEAD扩展workdir,在diff。中编辑workdir内容
  • 仅限分阶段更改:
    • 使用HEAD扩展workdir(因为workdir内容与index匹配),workdir内容可编辑,对workdir的更改不会自动暂存。
  • 分阶段和工作日更改:
    • 使用HEAD进行差异分级,分阶段内容为只读。
    • 带有索引的diff workdir(暂存),workdir内容可编辑。

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

答案 1 :(得分:2)

首先,确保使用(最新的2.41或更高版本,2018年2月)Visual Studio:issue 1454报告"与未修改的"比较以前遇到过一些问题。

第二,"与未修改的"比较相当于 git diff HEAD (请参阅" what the difference between git diff HEAD vs --staged")

这就是" hack"是"重置为所需的旧修订版"保持更改"并且提交#34;:HEAD被重置为反映旧提交的提交,而您的本地更改仍然存在,从而启用"与未修改的比较"功能。
虽然" hacky和不受欢迎",但是在使用Visual Studio时使用较旧的提交来模拟该功能(而不是切换到命令行)

也许另一种方法是在旧提交上创建和签出新分支。如&#34; Why git keeps showing my changes when I switch branches (modified,added, deleted files) no matter if I run git add or not?&#34;中所述,您应保留当前的更改,但HEAD会更改为旧提交,再次允许&#34;与未修改的比较&#34;。< / p>

OP补充道:

  

相比之下,比较差异视图中的2个提交仅显示您无法编辑的临时文件夹中这些文件的只读副本。

比较两个旧版本之间的比较是不允许编辑:你会在哪里应用这些更改?

最好在其中一个版本上创建一个新分支,然后与其他提交进行比较。