如何在 Visual Studio 2015 中从 Git 获取特定版本?

Posted

技术标签:

【中文标题】如何在 Visual Studio 2015 中从 Git 获取特定版本?【英文标题】:How do you get a specific version from Git in Visual Studio 2015? 【发布时间】:2016-11-30 16:08:53 【问题描述】:

有没有办法在 Visual Studio 2015 - Team Explorer/Team Services Git 中获取文件的特定版本(来自特定提交)?

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

我没有创建任何分支。我继续在“master”分支中提交。

【问题讨论】:

【参考方案1】:

(这适用于 VS2015 和 VS2017。)

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

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

现在您可以对该文件执行任何您想做的事情,然后在完成后撤消待处理的更改。

【讨论】:

看起来如果你需要测试大约 816 个更改的文件,你可能会在完成之前死掉 @picolino 在这种情况下,您当然只需签出一个较旧的提交。但这个问题是如何测试单个文件的特定版本(大概不需要花时间签出和/或分支并重新加载所有内容)。【参考方案2】:

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


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

使用 Visual Studio 2015 更新 3:

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

    查看分支的历史记录(Team ExplorerBranches → 右键单击​​分支) 右键单击所需的提交并选择 ResetReset and Keep Changes (--mixed)。 您的本地代码仍将是最新提交中的内容,但自所需提交以来的所有更改将在 Team ExplorerChanges 中显示为待处理的更改。您的分支指针现在位于您重置的提交上,但代码仍然是您开始的提交中的内容(最新提交)。 转到团队资源管理器更改,右键单击要在所需提交中使用版本的文件,然后选择“撤消更改...”。这会将该文件恢复为您重置的提交 - 撤消回该提交中的内容。

您现在将拥有存储库中每个文件的最新版本,但您刚刚撤消更改的文件除外。您现在可以在最新提交时再次重置混合,以便在 Team ExplorerChanges 中仅查看您正在使用旧版本的一个文件,但如果您只是尝试做的是运行解决方案,这一步是不必要的。


将整个解决方案/源代码库重置为特定提交:

使用 Visual Studio 2015 更新 3:

重要

使用这种方法,任何传出的提交都将丢失。

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

    确保您没有任何传出提交 - 如果您有传出提交,请执行推送(*Team Explorer → 同步传出提交View History 在分支上(Team ExplorerBranches → 右击分支)

    右键单击所需的提交并选择 ResetReset and Delete Changes (--hard)。 。 在 Team ExplorerSync 中,然后在 View History 窗口中,您最终会收到从所需提交到远程分支中最新提交的传入提交,以及您本地的代码将匹配所需的提交。

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

请参阅 this great answer,其中解释了“git reset”命令以及 --hard 与 --mixed 之间的区别。

【讨论】:

问题是如何获取特定文件的先前版本。您的建议将获得整个解决方案的先前版本。 @MattFrear 你说得对,先生!我已经相应地更新了答案。感谢您指出这一点!【参考方案3】:

在 Visual Studio 2015 中,如果您执行 View History(从 Team Explorer 中 Changes 面板上的 Actions 菜单): p>

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

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

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


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

git checkout 9eab01d9

完成后,再次查看 master:

git checkout master

您可能会收到有关在分离的头上工作的警告,在这种情况下,您可以create a branch temporarily:

git checkout -b temp-branch-name 9eab01d9

熟悉 Git 命令行是个好主意,Visual Studio 工具正在出现,但它缺少很多功能。

【讨论】:

问题是如何获取特定文件的先前版本。此答案将获得整个解决方案的先前版本。如果您只想将一个文件重置为特定提交,而将解决方案的其余部分保留在不同的提交上,请参阅this answer That answer 在底部还包含将整个解决方案重置为特定提交的步骤无需创建临时分支 如本答案所示。 感谢 @Dave 通过 Visual Studio 快捷方式使用/显示

以上是关于如何在 Visual Studio 2015 中从 Git 获取特定版本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VIsual Studio 2013 中从 UML 图生成 C++ 代码

如何在 Visual Studio 2013 中从 C# 解决方案生成序列图?

如何在 Mac 终端中从 Visual Studio 运行应用程序

如何在 Visual Studio 中从 SQL 脚本创建数据库并将其添加到项目中?

如何在 Visual Studio 中从数据库中获取数据(使用 C#)时使 HTML 行可点击

在 Visual Studio 2010 中从 .NET 项目启动 C++ 项目