IntelliJ 和 Git:如何查看一个提交和两个旧提交之间的差异?

IntelliJ and Git: How to see diffs between a commit and two older commit?

你可能知道这个 window 你可以在其中看到一个提交与一个更早的提交之间的差异。

你知道我怎么能看到完全相同的比较,但是在一次提交和上一次提交之间,这不一定是当前提交之前的一次提交。

我知道我可以针对一个文件执行此操作,但我想针对整个项目执行此操作。

您可以 select 在 git 日志 window 中进行任意数量的提交(使用 shift/ctrl 并单击或光标键),右侧窗格将显示累积差异。

不幸的是,在 IntelliJ 中,没有命令或操作来比较精确的修订。 以下是几个相关的请求: https://youtrack.jetbrains.com/issue/IDEA-125616 and https://youtrack.jetbrains.com/issue/IDEA-100431

但是,有一种方法可以查看两次提交之间发生了什么变化。为此,您需要转到版本控制 - 日志选项卡和 select 所需提交之间的整个范围(例如 select 较晚的提交,然后向下滚动到较旧的提交并使用 Shift 单击它).在显示更改文件的右侧窗格中,您将看到所有更改。

另一种方法:

  1. 打开1: Project面板
  2. 右键单击项目的根文件夹
  3. Select GitShow History 从菜单

这打开了一个完全不同的 git 日志视图,您可以在其中完全按照主 (9: Version Control) git 的预期进行操作日志...即:

  1. Select(仅!)两次提交
  2. 点击Compare

从出现的弹出对话框中,您可以select任何文件并按Ctrl-/Cmd- D(或右键单击 select 唯一的菜单项)以查看更改。

不幸的是,似乎没有任何方法可以"pin"查看您的工作区,尽管它会在您需要时一直悬停在顶部。

希望有一天 JetBrains 会创建这些 UI 的 "best of both worlds" 合并版本,这样我们就可以比较主 Version Control 日志中的内容。要添加到另一个答案中列出的此问题的 JetBrains 门票列表中......最旧的似乎是 https://youtrack.jetbrains.com/issue/IDEA-86480

也在 CLion 中(我认为在其他 JetBrains IDE-s 中是一样的):

  1. 打开 VCS 日志
  2. 通过其他分支过滤 VCS 日志(例如,personal/sherstennikov/krt-23941)
  3. 前 n 个提交必须是我们要与当前分支进行比较的其他分支上的范围
  4. select 左键单击其他分支 HEAD
  5. 右击它
  6. select 菜单 'Branch '(例如:分支 'personal/sherstennikov/krt-23941')
  7. 通过右侧的箭头展开并单击 'Compare with Current'
  8. 你得到一个 window(见图)'Comparing with in root ' 左上窗格包含来自其他分支的提交范围 左下方窗格包含当前分支的日志 右窗格包含其他分支和 HEAD(或者可能 selection)中 commit/several-selected-commits(如果范围 selected,文件列表是累积的)之间的文件列表在当前分支
  9. 现在您可以单击右窗格中的文件以在单独的 window 中获取 selected 版本之间的差异(我们称其为 file-diff-between-other-and-current- window) 10.also in file-diff-between-other-and-current-window 就在 unified/side-by-side 查看器的左侧 select 或者,有一个控件可以在文件之间切换前面提到的不同文件列表