如何在Visual Studio Code中比较不同分支

490

如何在Visual Studio Code中比较两个不同的分支?

这是否可能?


1
不是,但你应该在 Github 上寻找或提交一个功能请求。 - Rob Lourens
Git Tree Compare 是一个简单的插件,用于比较工作树和选择的分支之间的文件差异。 - Noam Manos
9个回答

851

2021答案

以下是逐步指南:

  1. 安装GitLens扩展程序:GitLens
  2. 然后,单击源代码控制

源代码控制

  1. 单击搜索和比较

单击搜索和比较

  1. 单击比较引用

比较引用

  1. 选择要比较的分支:

选择分支

  1. 现在,您可以从“搜索和比较”中选择任何要查看差异的文件

查看差异


4
这一定是VSCode最好的扩展之一。很棒的功能!我甚至可以在分割模式下编辑适当的文件。 - klewis
14
请注意,在步骤4中实际上有两个步骤:选择A分支和选择与之比较的B分支。 - Louis Yang
3
gitlens: compare 很有用,如果你不喜欢侧边栏。 - gebbissimo
5
我刚刚根据你的答案安装了GitLens,五分钟前还不知道我需要这个扩展程序。 - WTFranklin
15
截至2023年6月,Gitlens工具栏上提供了搜索和比较选项,而不是Git。 - Danish
显示剩余17条评论

111

更新: 截至2020年11月,Gitlens已出现在VSCode内置的源代码控制面板中。

我建议使用:Git Lens

enter image description here


44
关于使用的一些详细说明,我发现在Git Lens中比较分支的方法是:打开资源管理器视图(Ctrl + Shift + E),找到Git Lens组,右键单击要比较的分支并选择“选择以进行比较”,然后右键单击第二个分支并选择“与所选项进行比较”。结果将显示为名为GitlensResults的单独组,在Git Lens下方。在那里,您可以查看提交并直接比较文件。 - Vidar
1
我去年(2017年)了解了GitLens,并立即留下深刻印象。在底部的GitLens视图中,您可以选择要比较的分支,然后像上面所述的“与所选进行比较”一样找到要将其与之比较的分支 - 然后您可以选择显示在两者之间更改/添加的单个文件。这个扩展是我在新的VSCode安装上安装的第一个扩展。我依赖它。 - Mark W. Mitchell
1
我想把当前的工作树与某个分支进行比较,并直接编辑文件。GitLens允许我将实际文件另存为...,但我需要先找到它。是否有更方便的方式?在IntelliJ IDEA中,我只需点击一个箭头并移动这些更改即可... - Radim Vansa
1
GitLens非常易于使用,非常有帮助。感谢分享。 - R.F
1
最佳答案:我曾经苦苦挣扎地想让Git History Diff工作,但这个工具非常容易使用。强烈推荐,感谢提供信息! - Lostaunaum
显示剩余4条评论

43

没有使用 GitLens,只需使用 Git Graph 插件即可更加简单地实现以下操作。

在打开 Git Graph 后,点击第一个要比较的提交记录,然后按住 Ctrl/Cmd 键并单击第二个提交记录。两条线都会被突出显示。提交详细信息现在将显示A 和 B 提交记录之间的所有差异,使您可以比较来自不同分支或相同分支的任何两个提交记录。

enter image description here 来源:Git Graph 扩展页面


1
非常感谢。我非常喜欢这个扩展。 - charan vendra
1
华丽,喜爱这种方式。 - ahfx

23
如果你只想使用GitLens查看工作副本和特定提交之间某个文件的更改,那么当前已接受的答案可能会使你很难找到感兴趣的文件,尤其是在许多文件在版本之间发生了变化的情况下。相反,如果该文件已打开,请右键单击该文件的选项卡(或者,如果它当前未打开,请转到侧边栏中的文件资源管理器并右键单击该文件),然后转到提交更改>使用修订版打开更改...(或使用分支或标记打开更改...)。

5
正是我所需要的(比较两个分支之间的1个文件),谢谢! - rdhainaut
2
这正是我所需要的。一个小细节:在“源代码控制”面板中右键单击文件时,才会出现“打开更改”选项,而不是在“文件资源管理器”面板中(并且在安装Git Lens扩展后)。 - ianinini
这么有用而且非常常见的工作流程竟然被取了个这么晦涩的名字,简直让人发疯。我以前知道怎么做,但后来又不得不再花15分钟去谷歌一下,因为我尝试过的方法都没能帮我找到这个。 - undefined

17

使用Git History Diff插件可以方便地进行分支对比:

https://marketplace.visualstudio.com/items?itemName=huizhou.githd

访问上面的链接并向下滚动到名为Diff Branch的动画GIF图像。您会发现可以轻松选择任何分支并与您所在的分支进行并排比较!这就像获得GitHub拉取请求中将看到的预览一样。对于其他Git内容,我更喜欢Visual Studio Code的内置功能或像其他人提到的Git Lens。

然而,上述插件是做分支对比非常出色的工具(例如,对于那些进行rebase Git流程且需要在强制推送到GitHub PR之前进行预览的人)。


由于某种原因,我无法在F1 / 命令面板中找到“GitHD”的选项。 - Jeff

16

8

现在可以使用 githistory 扩展实现这个功能。

这里有一个小技巧:你可以比较每个分支的最新提交,这相当于将两个分支并排比较或创建 PR。

以下是使用 githistory 扩展进行操作的步骤:

  1. 打开 githistory
  2. 通过点击"Git Commit Icon"选择当前分支中最新的提交(通常应该是列表中的最新提交)。从打开的下拉菜单中点击“Select this commit”。
  3. 通过点击"Git Commit Icon"选择你想要比较的分支中的最新提交。
  4. 结果,下拉列表将出现几个选项→ 选择最后一个说“Compare with SHA”的选项,然后就可以看到差异了。

4

我通常想将当前检出的状态与其他分支进行比较,通常是master。由于我喜欢使用键盘快捷键,我发现最简单的方法(从已有的各种答案中编译而来)是:

  1. 按下ctrl/cmd-P,打开VSC命令面板
  2. 开始输入“git compare”。会出现以下选项: enter image description here
  3. 选择“Compare HEAD with...”(或任何更适合您用例的选项)
  4. 在出现的对话框中,选择所需的分支,例如master enter image description here
  5. 在“搜索和比较”窗口(通常位于左下角)中检查结果。根据需要展开箭头,例如查看不同的文件,或者Behind/Ahead以查看提交列表。 enter image description here

如果您想比较两个特定的分支(而不是检出的分支),请在第3步中选择“Compare References...”。然后,您可以选择2个分支/标签/提交/等进行比较。


2
在2020年11月发布的11.0.0版本中,GitLens视图默认全部放置在VSCode的source control选项卡下,包括具有比较分支功能的Search & Compare视图:

Compare working branch

可以在GitLens设置中将其更改回侧边栏布局:

Layout settings


2
2022年5月,已安装GitLens插件,但仍无法看到“搜索和比较”视图。 - Christian Vincenzo Traina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接