在 Visual Studio 中浏览 Git 存储库并比较分支

“Git 更改”窗口提供了一种在编码时无需离开代码即可与 Git 交互的无缝方式。 但有时,将焦点放在 Git 存储库上会更有意义。 例如,你可能需要了解团队一直在处理什么,或者比较两个提交以调查 bug。

你可以与所选的 Git 提供程序远程协作,例如 GitHub 或 Azure DevOps。

浏览本地和远程分支

若要开始操作,请选择“视图”菜单上的“Git 存储库”(或使用 Ctrl+0、Ctrl+R 键盘快捷方式)来打开“Git 存储库”窗口。 还可选择“Git 更改”窗口和状态栏中的“传出/传入”链接来访问“Git 存储库”窗口。

Screenshot that shows the anatomy of the Git Repository window.

“Git 存储库”窗口包含 3 个主要部分,编号见上面的屏幕截图:

  1. 分支:Git 通过分支使用户能够执行多任务并试验代码。 如果同时处理多个功能,或者要探索想法而不影响工作代码,则分支可能会很有用。

  2. :此部分直观呈现分支的状态。 它有 3 个子部分:

    • 传入:显示团队一直在参与的传入提交。
    • 传出:显示你尚未推送的本地提交。
    • 本地历史记录:显示本地存储库跟踪的其余提交。
  3. 提交:选择“图”部分中的任何提交可打开其详细信息。 可通过选择提交引入的更改来检查这些更改,这会显示差异。 例如,上一个屏幕截图显示了由一个提交引入 Resize.cs 文件的更改。

通过 Alt+向上键或 Alt+向下键键盘快捷方式,可在这些部分之间跳转。

无需切换分支即可浏览任何本地或远程分支。 找到想要将焦点置于其上的提交时,选择“在新选项卡中打开”按钮,在另一选项卡上打开提交。

Screenshot of how to open a commit on a new tab.

Screenshot of the tab for commit details.

提示

若要全屏显示提交,请分离“提交”选项卡,然后使用最大化按钮将“提交”窗口最大化。 还可选择“差异配置”(齿轮图标)来选择喜欢的差异配置。

Screenshot of full-screen commit details with diff configurations.

多分支图视图

版本 17.7 的新增功能:当你打开 Git Repo 窗口时,会从单分支视图开始。 然后,可以选择任何分支,将分支及其提交添加到多分支图形视图,从而添加视觉提示,以便更高效地与多个分支交互。

Screenshot of the multi-graph branch view in Visual Studio.

“本地历史记录”视图左侧有线条着色和分支标签,有助于更轻松地跟踪属于每个分支的提交。 可以使用表顶部的分支列表更轻松地在分支之间滚动,并立即知道图中显示的分支。

比较提交

若要比较分支中的任何两个提交,请使用 Ctrl 键选择要比较的两个提交。 然后,右键单击其中一个提交,再选择“比较提交”。

Screenshot of how to compare two commits.

Screenshot of compared commits.

提示

与“提交详细信息”类似,可使用“在新选项卡中打开”按钮在另一选项卡中打开比较,或者在屏幕中将其最大化。

根据提交创建分支

在 Visual Studio 中,可使用“Git 存储库”窗口中的“Git 图”窗格,根据以前的提交创建分支。 为此,请右键单击要从中创建新分支的提交,然后选择新建分支

Screenshot of the Git Graph pane of the Git Repository window.

注意

此操作的等效命令是 git branch <branchname> [<commit-id>]

比较分支

通过比较分支,可简要了解两个分支之间的差异。在创建拉取请求、合并甚至删除分支之前,这些差异很有用。

Diagram that illustrates how Git compares branches.

若要使用 Visual Studio 将当前签出的分支与其他分支进行比较,可使用状态栏中托管的分支选取器和 Git 更改工具窗口来选择要与之比较的任何本地或远程分支。 右键单击目标分支,然后选择“与当前分支比较”。 或者,可利用“Git 存储库”窗口中的分支列表来访问同一命令。

Animation that shows the branches comparison entry points.

选择“与当前分支比较”将打开比较分支体验,你可在其中导航浏览更改列表并选择想要比较的文件。

Screenshot that shows how to compare branches by using the diff view.

提示

如果更喜欢内联差异,可使用“差异配置选项”齿轮图标并切换到内联差异视图。 Screenshot that shows the Diff Configuration Options that're available to you.

签出提交

签出提交在很多方面都是有益的。 例如,通过签出可返回到存储库历史记录中的上一个点,可在其中运行或测试代码。 如果要查看来自远程分支(例如,同事的分支)的代码,签出也很有用。 这样,如果不打算参与本地分支,则无需创建本地分支。 在这种情况下,只需签出你想要查看的远程分支的提示即可。

Diagram that illustrates the Git checkout commit process.

若要在 Visual Studio 中签出之前的提交,请打开“Git 存储库”窗口,右键单击要返回到的提交,然后选择“签出(-分离)”。 Visual Studio 显示一个确认对话框,其中说明签出提交后,你将处于 HEAD 分离状态。 这意味着存储库的 HEAD 将直接指向提交而不是分支。

Animation that shows the checkout commit entry points.

现在,你处于 HEAD 分离状态,可随意运行和测试代码,甚至浏览和提交更改。 浏览完毕并想要返回分支时,可选择通过签出现有分支来放弃更改,或者选择通过先创建新分支来保留更改。

重要

在 HEAD 分离状态中创建的提交与任何分支都不关联,在签出分支后,Git 可能会对其进行垃圾回收。 这就是保留更改的原因,建议在签出分支之前创建新分支。 例如,如果我们签出 Main 而不创建新分支,则提交 C5 和 C6 将被垃圾回收。 Diagram that illustrates the detached head commits in Git.

若要详细了解 HEAD 分离状态,请参阅 Git 文档 HEAD 分离

如果想要快速查看拉取请求并评估最新更新,签出远程分支的提示会很有帮助。 若要在 Visual Studio 中执行此操作,首先请确保从远程存储库提取并获取最新更新。 然后右键单击要查看的远程分支,再选择“签出提示提交”。

Screenshot that shows the Checkout Tip Commit option.