相同的git重基生成不同的哈希

相同的git重基生成不同的哈希,git,rebase,Git,Rebase,我正试图弄明白为什么会发生以下情况。假设我以提交历史记录开始,如下所示: 97a231c (daughter1, daughter2) ... b051699 ... 0bfc754 (old-parent) ... f46661a (new-parent) ... 在这一点上,我检查了daughter1并执行了一个重基: git checkout daughter1 git rebase --onto new-parent old-parent 这将导致以下历史记录: 48690c3 (d

我正试图弄明白为什么会发生以下情况。假设我以提交历史记录开始,如下所示:

97a231c (daughter1, daughter2) ...
b051699 ...
0bfc754 (old-parent) ...
f46661a (new-parent) ...
在这一点上,我检查了daughter1并执行了一个重基:

git checkout daughter1
git rebase --onto new-parent old-parent
这将导致以下历史记录:

48690c3 (daughter1)
5f745e9 ...
f46661a (new-parent) ...
现在,由于daughter1和daughter2之间的最后两个提交在每个细节上都是相同的,因此我希望相同的rebase产生相同的哈希:

git checkout daughter2
git rebase --onto new-parent old-parent
但是,第二个重基给了我:

c1cb35b (daughter2) ...
af1e8f7 ...
f46661a (new-parent) ...

什么会导致这些相同的REBASE中的分支出现分歧?

即使内容相同,REBASE也会始终生成不同的哈希,因为至少创建修订的时间(提交时间,修订的一个成员)不一样。。。这足以为修订生成不同的哈希值。

即使内容相同,REBASE也会始终生成不同的哈希值,因为至少创建修订的时间(提交时间,修订的一个成员)不一样。。。这足以为修订生成不同的哈希。

它们是在不同的时间完成的?时间戳是散列的一部分。这是经过设计的。对提交的任何更改,包括更改的时间,都应该生成不同的提交哈希。它们是在不同的时间完成的吗?时间戳是散列的一部分。这是经过设计的。对提交的任何更改,包括更改时间,都应该生成不同的提交哈希。因此,时间戳与git log提供的时间戳不同?每个修订有2次。一个是作者时间,另一个是提交时间。创建新修订时,两者都是相同的。在那之后,每次你在另一个版本的基础上选择这个版本(或者重新设置它的基础),git都会保留作者的时间。。。但提交时间将是创建新修订的时间。因此,时间戳与git log提供的时间戳不同?每个修订有2次。一个是作者时间,另一个是提交时间。创建新修订时,两者都是相同的。在那之后,每次你在另一个版本的基础上选择这个版本(或者重新设置它的基础),git都会保留作者的时间。。。但提交时间将是创建新修订的时间。