你能得到两个git提交之间的实际差异吗?

时间:2016-05-06 08:40:48

标签: git

在第一次提交的情况下,添加文件X,第二次提交,删除X,第三次提交重新添加。

如果你运行git diff,那么你会删除X,添加X.

有没有办法分析这组变化并获得结果,“没有变化”?

我实际上对线路更改感兴趣,在我的实例中,我得到了这个回复:

index 5988d3c..eaf3238 100644
--- a/.babelrc
+++ b/.babelrc
@@ -1,3 +1,3 @@
-{
-  "presets": ["es2015", "stage-0"]
-}
+{
+  "presets": ["es2015", "stage-0"]
+}

似乎显示完全相同的行添加了

编辑:

这是diff -R

的输出
--- b/.babelrc
+++ a/.babelrc
@@ -1,3 +1,3 @@
-{
-  "presets": ["es2015", "stage-0"]
-}
+{^M
+  "presets": ["es2015", "stage-0"]^M
+}^M

3 个答案:

答案 0 :(得分:2)

您可以简单地执行git diff [first commit] [third commit],这将不会产生任何差异。

例如,这里是我的测试存储库的git log

commit 368c6c0bc4169b8f482761b036da2284f937579d
Author: Adam
Date:   Fri May 6 10:17:45 2016 +0100

    Edited file back.

commit 54d9885f860b56c34718387206397c703eb37b36
Author: Adam
Date:   Fri May 6 10:16:51 2016 +0100

    Edited file.

commit 681f117fd095c7a99d631a1819db855d7fd9e6e8
Author: Adam
Date:   Fri May 6 10:16:09 2016 +0100

    Added file.

当我使用git diff 681f117fd095c7a99d631a1819db855d7fd9e6e8 368c6c0bc4169b8f482761b036da2284f937579d比较第一次和第三次提交时,结果为空。

但是,如果我使用git diff 681f117fd095c7a99d631a1819db855d7fd9e6e8 54d9885f860b56c34718387206397c703eb37b36比较第一次和第二次提交,结果为:

diff --git a/file.txt b/file.txt
index c9a0e4f..76af740 100644
--- a/file.txt
+++ b/file.txt
@@ -1,6 +1,6 @@
 I won't edit this line.

-I will edit this line.
+I have edited this line.

 I won't edit this line.

如果您没有获得空的更改集但行读取相同,则行内的字符必须存在一些差异,例如使用的制表符代替空格或不同的行结尾。

执行差异时,您可以使用git diff -w忽略空格。文档:https://git-scm.com/docs/git-diff

我希望这会有所帮助。

答案 1 :(得分:1)

您可以尝试使用以下命令它将显示两次提交之间的区别..

git diff first_commit_id(hash) second_commit_id(hash)

您可以通过键入git log命令来找到commit_id(哈希)。

Example:

git diff effd192760b957b9a65b011249c122f8434ba7cf effd192760b957b9a67b011249c122f8434ba7cf

答案 2 :(得分:0)

正如我在评论中所说,这是一个空白问题。使用dos2unix删除^M。如果你想忽略使用git diff -w的空格,虽然我不推荐它。