你如何从Visual Studio 2015中的Git获得特定版本?

Tch*_*uan 36 git visual-studio-2015 azure-devops

有没有办法在Visual Studio 2015中获取文件的特定版本(来自特定提交) - 团队资源管理器/团队服务Git?

我只是希望使用以前版本的文件来运行解决方案,只是为了查看过去的运行情况,然后回到最新版本继续开发.

我没有创建任何分支.我一直在"主"分支.

Dav*_*haw 45

在Visual Studio 2015中,如果您执行" 查看历史记录"(从" 团队资源管理器" 的" 更改"面板上的" 操作"菜单中):

查看历史记录

然后右键单击您感兴趣的提交:

右键点击

您可以从那里创建一个分支:

新分行

我看不到在Visual Studio中签出提交的方法.


使用命令行,您可以检查要使用的提交SHA:

git checkout 9eab01d9
Run Code Online (Sandbox Code Playgroud)

完成后,再次检查主人:

git checkout master
Run Code Online (Sandbox Code Playgroud)

您可能会收到有关处理分离头的警告,在这种情况下,您可以临时创建分支:

git checkout -b temp-branch-name 9eab01d9
Run Code Online (Sandbox Code Playgroud)

对于Git命令行感到满意是一个好主意,Visual Studio工具正在出现,但它缺少很多功能.

  • 问题是如何获取 **特定文件** 的先前版本。此答案将获得_整个解决方案_的先前版本。如果您只想将一个文件重置为特定提交,而将解决方案的其余部分留在不同的提交中,请参阅 [此答案](/sf/ask/2701968811/ -specific-version-from-git-in-visual-studio-2015/42398444#42398444) (2认同)

Chr*_*ing 22

感谢Matt Frear指出我的原始答案会将整个解决方案重置为特定提交,而问题是如何使用一个文件的特定版本,同时保留最新的其他内容.将原始帖子内容保留在底部,以防有人发现有用.


要保持最新的整个解决方案,但使用旧版本的单个文件:

使用Visual Studio 2015 Update 3:

我将添加屏幕截图并清理/重新格式化答案以便更容易理解,但我希望得到一个修正后的答案,它会更准确地解决问题,直到我有时间重新审视它.

  1. 查看分支上的历史记录(团队资源管理器分支 →右键单击分支) 查看分支上的历史记录
  2. 右键单击所需的提交,然后选择重置重置和保留更改( - 混合).您的本地代码仍将是最新提交中的内容,但自所需提交以来的所有更改都将显示为团队资源管理器中的挂起更改→ 更改.您的分支指针现在位于您重置的提交上,但代码仍然是您开始提交的内容(最新提交).
  3. 转到团队资源管理器更改,右键单击要在所需提交中使用该版本的文件,然后选择"撤消更改...".这会将该文件还原到您重置的提交 - 撤消回到该提交中的内容.

您现在将拥有存储库中每个文件的最新文件,除了您刚刚撤消更改的文件.您现在可以在最新提交时再次重置混合,以仅查看您在团队资源管理器中使用旧版本的文件→ 更改,但如果您要执行的只是运行解决方案,则此步骤是不必要的.


要将整个解决方案/源存储库重置为特定提交:

使用Visual Studio 2015 Update 3:

重要

使用此方法,任何传出提交都将丢失.

确保执行步骤1(推送任何传出提交)

  1. 确保您没有任何传出提交 - 执行推送,如果您确实有传出提交(*团队资源管理器→ 同步传出提交) 确保您没有任何传出提交 - 执行推送,如果您确实有传出提交
  2. 查看分支上的历史记录(团队资源管理器分支 →右键单击分支) 查看分支上的历史记录
  3. 右键单击所需的提交,然后选择重置重置和删除更改( - 硬). 重置和删除更改( - 硬)"">右键单击所需的提交,然后选择重置和删除更改( - 硬)"">.在团队资源管理器同步,然后在查看历史记录窗口中,您将最终得到从所需提交到远程分支中最新提交的传入提交,并且您的本地代码将匹配所需的提交.

  4. 完成后,执行团队资源管理器同步中的拉动,将本地分支带到远程分支的最新提交.

看到这个很好的答案解释了'git reset'命令以及--hard vs --mixed之间的区别.

  • 问题是如何获取特定文件的先前版本.您所建议的将获得整个解决方案的先前版本. (6认同)

TTT*_*TTT 5

(这适用于 VS2015 和 VS2017。)

请注意,这个问题和这个答案适用于单个文件(或少量文件)。如果您想对许多文件执行此操作,只需从所需的提交创建一个新分支,或将其硬重置为所需的提交,就像其他答案所建议的那样。但由于检查旧的提交可能需要很多时间,特别是对于大型存储库,我相信这是单个文件最简单的方法:

  1. 在解决方案资源管理器中,打开文件的当前版本。
  2. 仍然在解决方案资源管理器中,右键单击该文件并选择“查看历史记录”。
  3. 在历史记录窗口中,找到您要测试的版本的提交。右键单击它并选择“打开”。这会弹出一个临时文件,其中包含所需版本的内容。
  4. 复制该版本的内容(Ctrl-A Ctrl-C)并将其粘贴到实际的当前版本上。

现在您可以对该文件执行任何您想要执行的操作,然后在完成后撤消挂起的更改。

  • 看起来如果你需要测试大约 816 个已更改的文件,你可能会在完成之前就死掉 (2认同)