7

如何git diff在 Atlassian SourceTree 桌面应用程序中执行相反的操作?换句话说,我如何让 SourceTreegit diff b a代替git diff a b

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

  3333
  2222
  1111

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

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

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

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

4

4 回答 4

4

这在 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)
于 2013-07-26T23:17:40.190 回答
4

假设您需要从当前分支中区分特定分支,唯一的方法是Berik答案,因为无法将分支作为第二个参数通知。

所以这显示了不同的正常顺序:

git diff branch_abc 生成文件

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

git diff -R branch_abc 生成文件

于 2020-09-21T13:29:28.873 回答
-1

通过切换提交的顺序可以是一个:

$ git diff HEAD 21da2e
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
 import java.net.SocketException;
-import java.net.URL;
+import java.net.URI;
$ git diff 21da2e HEAD

+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
 import java.net.SocketException;
-import java.net.URI;
+import java.net.URL;
于 2021-02-23T21:18:00.593 回答
-3

写起来会很好

# will display the additions as + and subtractions as -
git diff first second

# will display the additions as - (in red) and subtractions as + (in green)
git diff second first

这在标准 git 中应该可以正常工作。

于 2013-07-26T02:54:46.480 回答