IntelliJ:查看本地和git提交/分支之间所有更改文件的差异

166

使用IntelliJ的差异查看器是审查代码的好方法,因为您可以在本地版本中使用IntelliJ代码编辑器的所有功能(重构、自动完成等)进行更改。

不幸的是,我还没有找到如何在IntelliJ中进行代码审查最重要的事情,即:查看工作树中所有更改文件的差异(检出到您想要合并的分支)和另一个分支(您计划合并到的分支,例如“master”)的差异。

有人知道如何做到这一点吗?


请查看他们博客文章中的比较部分,链接为:http://blogs.jetbrains.com/idea/2012/03/simpler-and-more-powerful-ui-for-git-branches/。 - Vic
2
这个问题展示了显示所有文件与另一个分支(即master)的差异的菜单步骤:https://dev59.com/w5zha4cB1Zd3GeqPG4xE#55270244 - Alan Thompson
7个回答

117

这个功能现在已经实现了。要比较两个分支,你需要:

  1. 检出你想要比较的其中一个分支。
  2. 在IntelliJ窗口右下角状态栏中的Git分支弹出框中选择你想要比较的分支。会显示一个带有一些选项的弹出窗口。
  3. 选择“比较”选项。
  4. 默认情况下,这将显示所有提交。你也可以选择“差异”选项卡来显示实际更改。

这个功能在他们的一篇博客文章中有更详细的描述。


7
可以使用任意提交而不是分支来完成这个操作吗?我的意思是,我可以为此快速创建一个本地分支,但那似乎有点繁琐。 - Robin
1
@Hikaru755 是的,我创建了一个 tmp 分支,我想这已经足够好了。虽然看起来有点过度设计。 - ycomp
3
@Robin 是的,你可以这样做。打开文件的历史记录,选择两个提交并按下 Ctrl-D 键。它也适用于不同的分支。 - Victor Sergienko

88

尽管Jon Tirsen的答案是正确的,但你需要仔细阅读整个文本才能理解如何做到这一点。

以下是Mac上相同内容的图像。

  1. 我目前正在使用hello_world,并希望与master进行比较。

更新:在新的UI中,单击Show Diff with Working Tree

输入图像描述

  1. 接下来会弹出一个窗口。选择Files并按cmd + d

输入图像描述

  1. 另一个显示差异的窗口。您可以执行许多不同类型的差异。使用cmd + shift + ]cmd + shift + [在文件之间移动。

输入图像描述

差异技巧:IntelliJ提供了高级的差异功能。您可以在第三个图像上检查这些功能。


2
我该如何为整个项目而不是逐个文件来完成这个任务? - JoeMjr2
@JoeMjr2 我真的不确定这种功能今天是否可用。你可以使用 cmd + shift + [cmd + shift + ](如果你使用的是Windows,请将cmd替换为ctrl)来浏览所有文件。 - unknownerror
这个在2020版本更新中已经改变了,请看下面我的回答获取更新后的方法。 - BlueYoshi
你能否通过提交ID比较两个版本吗? - Dan Macak
很遗憾,这个模态框现在已经改成了选项卡视图,其中没有文件差异。因此,这个答案已经过时了。 - Innokenty
使用 cmd + d 可以显示任何给定文件的差异。不幸的是,我无法让 cmd + shift + [cmd + shift + ] 与此同时工作,所以我必须导航到下一个文件。 (如果您使用 Windows,请将 cmd 替换为 ctrl)。 - Paul

71

这在2020年版本更新中已经改变:

现在您需要执行以下操作:

  1. 检出要比较的分支之一。

  2. 打开“Branches” 菜单。

  3. 选择您想要与之比较的另一个分支。

  4. 选择“Show Diff with Working Tree”。

输入图像描述


谢谢,我意识到它已经改变了,但是找不到它去了哪里。 - fmquaglia
2
这是目前最新的答案。其他答案适用于旧版IntelliJ,但不适用于当前版本。 - Pavel
这是最好的答案!! - bluelurker
当我选择一个文件时,窗口会关闭。有没有办法不必再次通过菜单打开它? - cambunctious
最近的更新好像把这个选项给删掉了?我找不到“显示与工作树的差异”按钮。 - Simon Tran

16

现在可以实现了。您需要右键单击项目,选择 "Git - compare with branch..." 并选择 master 分支。完成。差异化所有文件。


这是一个不错的方法。如果您看到选项变灰,那是因为您没有在java/main/src项目文件夹上右键单击。 - julianm
这种方法还允许您与任意提交进行比较,而不是分支。只需使用“与修订版本比较”而不是“与分支比较”。 - Zac

2

如果您只想以并排的方式比较当前打开的文件和另一个分支,只需转到VCS -> Git -> Compare with Branch。


8
那回答了一个问题,但不是这个问题! :) - Lambart
现在是:Git -> 选择的目录 -> 与修订版本进行比较 - vaughan

1
如果您想比较整个项目:
  • 首先,请选择/单击您正在工作的项目。
  • 转到Git(选项卡)> 选择目录 > 与分支比较
  • 然后选择要比较的分支(例如origin/main)。
然后,您将获得分支之间不同文件的树形结构。您可以选择每个文件并进行比较、编辑、删除或添加任何需要的内容。

enter image description here


0

右键单击类并选择 Git 选项,您将看到与分支比较选项,在其中可以选择特定的分支。


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