与git diff比较相等但哈希不同的两个分支

与git diff比较相等但哈希不同的两个分支,git,Git,通常,当两个分支在同一源代码状态上重合时,它们将散列相同的代码,并显示为折叠在一起。但我发现自己处于一种有趣的状态(如标题所述) 这是我如何到达那里的。上周我有一个旧的分支,我将master的许多更改合并到其中。在这一点上,这是一个快进,而且和大师并没有区别 但是,当我将一个功能分支合并到这个分支中(它的状态与主分支几乎相同)时,结果是这样的: * b0dc045 - (new-branch) refactored it. seems to work fine | * 4b89219 - (HE

通常,当两个分支在同一源代码状态上重合时,它们将散列相同的代码,并显示为折叠在一起。但我发现自己处于一种有趣的状态(如标题所述)

这是我如何到达那里的。上周我有一个旧的分支,我将master的许多更改合并到其中。在这一点上,这是一个快进,而且和大师并没有区别

但是,当我将一个功能分支合并到这个分支中(它的状态与主分支几乎相同)时,结果是这样的:

* b0dc045 - (new-branch) refactored it. seems to work fine
| * 4b89219 - (HEAD -> feature, origin/feature) refactored it. seems to work fine
|/
* Merge branch 'master' into 'feature'
|\
...
“大师”就在下面某个地方

所以不管怎样,
gitdiff新分支特性
没有显示任何差异。。。但是他们得到了不同的散列

我可以检查哪些东西来真正了解它们的不同之处

更新:

我猜分支历史的各个方面都包含在生成散列的数据集中。这可以解释这种差异

所以我做了一个又快又脏的把戏

$ diff <(git log new-branch) <(git log feature) 
1c1
< commit b0dc045b82cfc2f7060ccd3b28dd1b1ca1cf2a59
---
> commit 4b8921960cc8f1d42e3e4d1b505228a2dc0c0638

这是因为提交消息、时间、作者和父提交ID是哈希的一部分。这确保了在提交发布之后,没有人可以更改这些字段,并且在提交之上进行了进一步的开发


但是,当然,它也允许您使用任意多的不同作者、提交时间、消息和历史记录重新提交相同的状态。每一次,您都会得到一个不同的散列,从而得到另一个没有内容差异的提交。

这些命令归功于@larsks

$ git cat-file -p new-branch; git cat-file -p feature; 
tree 26e6e56076b5578100857218df0cbed7fcab10a3
parent 72f868f7fd45ecabef78cab23f120d48a04bf38d
author Steven Lu (PuTTY Win7 on Centos 7 VM Feb26[tmux]) <stevenlu443@gmail.com> 1439228778 -0400
committer Steven Lu (Centos 7 VM Feb26) <stevenlu443@gmail.com> 1439230770 -0400

refactored it. seems to work fine
tree 26e6e56076b5578100857218df0cbed7fcab10a3
parent 72f868f7fd45ecabef78cab23f120d48a04bf38d
author Steven Lu (PuTTY Win7 on Centos 7 VM Feb26[tmux]) <stevenlu443@gmail.com> 1439228778 -0400
committer Steven Lu (Centos 7 VM Feb26) <stevenlu443@gmail.com> 1439228778 -0400

refactored it. seems to work fine
$git cat file-p新分支;git-cat文件-p特性;
树26E6E56076B557810857218DF0CBED7FCAB10A3
父级72F868F7FD45ECABE78CAB23F120D48A04BF38D
作者Steven Lu(PuTTY Win7 on Centos 7 VM Feb26[tmux])1439228778-0400
提交人Steven Lu(Centos 7 VM 2月26日)1439230770-0400
重构它。看起来很好用
树26E6E56076B557810857218DF0CBED7FCAB10A3
父级72F868F7FD45ECABE78CAB23F120D48A04BF38D
作者Steven Lu(PuTTY Win7 on Centos 7 VM Feb26[tmux])1439228778-0400
提交人Steven Lu(Centos 7 VM 2月26日)1439228778-0400
重构它。看起来很好用
增量处于提交时间
新分支


这是Craaazy Maaaan。

@AbeVoelker您提示我检查git日志,我假设日志格式将显示所有作者和日期值。它们是一样的。我想你可以看看
git cat file-p new branch
vs
git cat file-p功能查看作者/提交人姓名/电子邮件/日期。这不疯狂。唯一正确的做法。它允许你证明当你投入工作时你的系统时间是多少。再加上不同作者在此之后所作的进一步承诺,这就为作品完成的时间提供了非常有力的证据,甚至在法庭上也应该是有效的证据。