git commit sha在git diff中有所不同

时间:2012-02-29 18:50:50

标签: git

有以下日志:

$ git log
commit d335ed918ecadec2152152f76fd3c99dc59de80b
Author: author <author@email.com>
Date:   Wed Feb 29 18:45:48 2012 +0100

    a

commit ed937db6bb2350e37ffb1d0e2e4141ec4e650bcf
Author: author <author@email.com>
Date:   Wed Feb 29 18:45:22 2012 +0100

    a

commit 87dde7bc9fc081388b824f7e74267485fcc4edb0
Author: author <author@email.com>
Date:   Wed Feb 29 17:26:49 2012 +0100

    init
$ git diff ed937db6bb2350e37ffb1d0e2e4141ec4e650bcf d335ed918ecadec2152152f76fd3c99dc59de80b --full-index
diff --git a/a.cpp b/a.cpp
index f0df46dd3ce8569533dce862927c1b84cec41c04..0fe7d3905febc2c4abb08849bef266c093f6caca 100755
--- a/a.cpp
+++ b/a.cpp
@@ -1 +1 @@
-class A{};
+class A{}fdfds;

的问题是,的 ed937db6bb2350e37ffb1d0e2e4141ec4e650bcf 改变为 f0df46dd3ce8569533dce862927c1b84cec41c04 d335ed918ecadec2152152f76fd3c99dc59de80b 改变为 0fe7d3905febc2c4abb08849bef266c093f6caca 当由git的差异的处理。如何使这些值不变并保持不变?

2 个答案:

答案 0 :(得分:1)

正如消息中所述,f0df46d...&amp; 0fe7d39...Git index中的引用,它们用于这些提交中的实际文件。如果你的差异中列出了多个文件,那么它们将具有不同的索引SHA。

答案 1 :(得分:0)

我相信你所看到的是提交对象索引:

> ed937db6bb2350e37ffb1d0e2e4141ec4e650bcf d335ed918ecadec2152152f76fd3c99dc59de80b

和文件对象索引

diff --git a/a.cpp b/a.cpp
index f0df46dd3ce8569533dce862927c1b84cec41c04..0fe7d3905febc2c4abb08849bef266c093f6caca

如果你的提交包含多个文件,你会看到多行。总而言之,您不能使这些索引行显示提交,因为它们正在区分提交中更改的各种文件,从而向您显示适用于“索引”行的文件的哈希,而不是提交。