如何从当前版本和比最新版本更旧的版本之间的差异视图编辑文件的当前版本?
How do I edit the current revision of a file from diff view between current and a revision older than the latest one?
在 Visual Studio 中(如果您使用的是 git 存储库),您可以右键单击修改后的文件,然后 select "Compare with unmodified"。在那里你可以看到一个差异,你可以在其中编辑文件的当前版本。 澄清一下:您可以在与最新提交相比的差异视图中编辑源文件中当前未提交的更改。相比之下,在 diff 视图中比较 2 个提交只会显示这些文件在您无法编辑的临时文件夹中的只读副本。
但是,当您查看当前修订版和某些旧修订版之间的差异时(通过 select 使用 Ctrl 键单击并在右键单击菜单中编辑顶部提交和其中一个较旧的提交selecting "Compare commits...") 您无法编辑当前修订版中的文件。
在将任何旧版本(不仅仅是前一个版本)与当前版本进行比较时,是否可以在 Visual Studio 的差异视图中启用编辑当前版本文件?
旁注:开发人员讨厌的一个奇怪技巧是使用 "keep changes" 重置到所需的旧版本并进行提交,从而使 "compare with unmodified" 就好像它是以前的提交一样。但这是 hacky 和不可取的。
首先,确保使用(最新的 2.41 或更高版本,2018 年 2 月)Visual Studio:issue 1454 报告说 "Compare with Unmodified" 之前有一些问题。
其次,"Compare with Unmodified"相当于git diff HEAD
(参见“what the difference between git diff HEAD
vs --staged
”)
这就是为什么 "hack" "reset to the desired older revision with " 保持更改“并进行提交”:HEAD 被重置为反映旧提交的提交,而您的本地更改仍然存在,从而启用 "Compare with Unmodified" 功能。
虽然 "hacky and undesirable",但在 Visual Studio(而不是切换到命令行)
的同时,用较旧的提交模拟该功能
也许另一种方法是在旧提交上创建并签出新分支。如“Why git keeps showing my changes when I switch branches (modified,added, deleted files) no matter if I run git add or not?”中所述,您当前的更改应该保留,但 HEAD 会更改为旧提交,再次允许 "Compare with Unmodified".
OP 添加:
To contrast that, comparing 2 commits in diff view only shows you read-only copies of these files in temp folder which you cannot edit.
在不允许编辑的两个旧版本之间进行比较是有意义的:您将在哪里应用这些更改?
最好在其中一个版本上创建一个新分支,然后与另一个提交进行比较。
遗憾的是,目前不支持从 VS 2017 Git 历史工具 window 区分两个版本,即使其中一个版本是当前的 workdir 版本。我们目前也无法从 Changes 页面选择一个特定的版本来进行差异化。我会将其添加到我们的积压工作中,以供将来 Visual Studio 版本考虑。
如您所见,有时可以从团队资源管理器中的 Git 更改页面编辑差异。以下是我们如何确定 diff window 是否可编辑的摘要。
- Workdir 仅更改:
- Diff workdir with HEAD,workdir 内容可在 diff 中编辑。
- 仅分阶段更改:
- 使用 HEAD 区分 workdir(因为 workdir 内容匹配索引),workdir 内容可编辑,对 workdir 的更改不会自动暂存。
- 暂存和工作目录更改:
- Diff staged with HEAD,staged 内容是只读的。
- Diff workdir with index (staged), workdir 内容是可编辑的。
希望这对您有所帮助,感谢您提出这个问题。
在 Visual Studio 中(如果您使用的是 git 存储库),您可以右键单击修改后的文件,然后 select "Compare with unmodified"。在那里你可以看到一个差异,你可以在其中编辑文件的当前版本。 澄清一下:您可以在与最新提交相比的差异视图中编辑源文件中当前未提交的更改。相比之下,在 diff 视图中比较 2 个提交只会显示这些文件在您无法编辑的临时文件夹中的只读副本。
但是,当您查看当前修订版和某些旧修订版之间的差异时(通过 select 使用 Ctrl 键单击并在右键单击菜单中编辑顶部提交和其中一个较旧的提交selecting "Compare commits...") 您无法编辑当前修订版中的文件。
在将任何旧版本(不仅仅是前一个版本)与当前版本进行比较时,是否可以在 Visual Studio 的差异视图中启用编辑当前版本文件?
旁注:开发人员讨厌的一个奇怪技巧是使用 "keep changes" 重置到所需的旧版本并进行提交,从而使 "compare with unmodified" 就好像它是以前的提交一样。但这是 hacky 和不可取的。
首先,确保使用(最新的 2.41 或更高版本,2018 年 2 月)Visual Studio:issue 1454 报告说 "Compare with Unmodified" 之前有一些问题。
其次,"Compare with Unmodified"相当于git diff HEAD
(参见“what the difference between git diff HEAD
vs --staged
”)
这就是为什么 "hack" "reset to the desired older revision with " 保持更改“并进行提交”:HEAD 被重置为反映旧提交的提交,而您的本地更改仍然存在,从而启用 "Compare with Unmodified" 功能。
虽然 "hacky and undesirable",但在 Visual Studio(而不是切换到命令行)
也许另一种方法是在旧提交上创建并签出新分支。如“Why git keeps showing my changes when I switch branches (modified,added, deleted files) no matter if I run git add or not?”中所述,您当前的更改应该保留,但 HEAD 会更改为旧提交,再次允许 "Compare with Unmodified".
OP 添加:
To contrast that, comparing 2 commits in diff view only shows you read-only copies of these files in temp folder which you cannot edit.
在不允许编辑的两个旧版本之间进行比较是有意义的:您将在哪里应用这些更改?
最好在其中一个版本上创建一个新分支,然后与另一个提交进行比较。
遗憾的是,目前不支持从 VS 2017 Git 历史工具 window 区分两个版本,即使其中一个版本是当前的 workdir 版本。我们目前也无法从 Changes 页面选择一个特定的版本来进行差异化。我会将其添加到我们的积压工作中,以供将来 Visual Studio 版本考虑。
如您所见,有时可以从团队资源管理器中的 Git 更改页面编辑差异。以下是我们如何确定 diff window 是否可编辑的摘要。
- Workdir 仅更改:
- Diff workdir with HEAD,workdir 内容可在 diff 中编辑。
- 仅分阶段更改:
- 使用 HEAD 区分 workdir(因为 workdir 内容匹配索引),workdir 内容可编辑,对 workdir 的更改不会自动暂存。
- 暂存和工作目录更改:
- Diff staged with HEAD,staged 内容是只读的。
- Diff workdir with index (staged), workdir 内容是可编辑的。
希望这对您有所帮助,感谢您提出这个问题。