SourceTree:如何在相反的方向做一个 git diff?

Rob*_*ark 6 git git-diff atlassian-sourcetree

如何git diff在 Atlassian SourceTree 桌面应用程序中以相反的方向执行?换句话说,我如何让 SourceTree 做git diff b a而不是git diff a b

例如,如果我的提交在我的提交窗格中按以下顺序排列:

  3333
  2222
  1111
Run Code Online (Sandbox Code Playgroud)

我选择 3333 和 1111,它会显示从 1111 到 3333(即git diff 1111 3333)的变化差异。

我如何让它git diff在另一个方向上做一个,以便它是从 3333 到 1111(即git diff 3333 1111)的不同变化?

(注意:这个问题具体是关于如何在 Atlassian SourceTree 桌面应用程序中执行此操作,而不是一般如何在 git 中执行此操作。)

这是一个屏幕截图,显示我在 SourceTree 中选择了 2 个提交以查看差异

小智 13

假设您需要将特定分支与当前分支进行比较,唯一的方法是Berik答案,因为不可能将分支作为第二个参数。

所以这显示了正常顺序的差异:

git diff Branch_abc Makefile

这显示了相反顺序的差异:

git diff -Rbranch_abc Makefile


Rob*_*ark 5

这在 SourceTree 中是不可能的。

在answers.atlassian.com上问了这个问题,并从Atlassian员工那里发现,无法在相反方向上进行差异,提交之间的差异始终以“前向历史记录”顺序显示。

一些替代方案:

  1. 使用不同的外部 GUI 差异查看器


    -或者-

  2. 将旧提交 1111 中的文件复制到新提交 3333 的工作树中,然后查看工作树中的差异,例如,
$ cd {repo}
$ git diff --name-only 3333..1111 > /tmp/list_of_files_changed
$ git checkout 1111
$ mkdir /tmp/files_changed
$ cp --parents -pr $(cat /tmp/list_of_files_changed) /tmp/files_changed 
$ git checkout 3333
$ cp -pr /tmp/files_changed/* .
# (now look at the diff in SourceTree for the working copy)
Run Code Online (Sandbox Code Playgroud)