通常当两个分支在相同的源代码状态上重合时,它们将对它们进行散列并显示为折叠在一起.但我发现自己处于一个有趣的状态(标题中描述).
我是如何到达那里的.我上周有一个旧分支,我将很多变化从master合并到它.在这一点上,这是一个快进,而且与主人没有任何区别.
但是当我将一个功能分支合并到这个分支(它几乎和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'
|\
...
Run Code Online (Sandbox Code Playgroud)
"主人"在某处......
所以无论如何,git diff new-branch feature显示没有差异...但他们有不同的哈希.....
有什么东西可以检查,真正看到他们真正的不同之处?
更新:
我想分支历史的各个方面都包含在生成哈希的数据集中.这可以解释这种差异.
所以我做了一个快速而肮脏的把戏
$ diff <(git log new-branch) <(git log feature)
1c1
< commit b0dc045b82cfc2f7060ccd3b28dd1b1ca1cf2a59
---
> commit 4b8921960cc8f1d42e3e4d1b505228a2dc0c0638
Run Code Online (Sandbox Code Playgroud)
它表明第一行的哈希值不同.这是令人费解的部分.它还显示24000行git log的其余部分是相同的.
这是因为提交消息、时间、作者和父提交 ID 是哈希的一部分。这确保了在发布提交并在其基础上进行进一步开发后,任何人都无法更改这些字段。
但是,当然,它还允许您根据需要向任意多个不同的作者、提交时间、消息和历史记录重新提交相同的状态。每次,您都会获得不同的哈希值,从而获得另一个没有内容差异的提交。