我需要知道为什么两个提交不同。我有两个提交,e2383d和2c44ab,显然,因为它们有不同的哈希,不同。
首先,我了解git diff
,目前我正在尝试git diff e2383d 2c44ab
。它成功返回,没有输出。这两个提交有:
基本上,我的树看起来像这样:
* ← stuff based on that commit
| * ← e2383d
* | ← 2c44ab
|/
* ← the common parent
我即将消除e2383d,但在此之前,我想确保那里没有重要的东西。然而,我对git
的理解是,如果两个“提交”是相同的,它们将具有相同的哈希值,因此除非两者之间存在差异,否则我的情况将不存在。
我尝试过的另一件事:
% diff <(git show 2c44ab) <(git show e2383d)
1c1
< commit 2c44ab...
---
> commit e2383d...
忘记提交有> 1个日期。以下命令显示(对我来说)我的两个提交之间的区别:
% diff <(git show --pretty=fuller 2c44ab) <(git show --pretty=fuller e2383d)
1c1
< commit 2c44ab96bde429c9f345d8a12dfcf2278faa9333
---
> commit e2383d3164589bb3a8a679c9cb6bbe93ea41e2ee
5c5
< CommitDate: Wed Nov 23 17:06:40 2011 -0800
---
> CommitDate: Mon Nov 28 11:41:26 2011 -0800
星期一的提交日期是我进行改变的时间。现在,为什么git
存储了这个 - 似乎打败了“这些是同样的提交,我会折叠它们”我预期的行为。
答案 0 :(得分:2)
两个提交可能具有相同的树但具有不同的元数据。每次修改,重新定位或挑选提交时,都会更新提交日期并写入新的提交。
如果git说提交A和B之间的差异是空的,但你仍然不确定,你可以自己验证它们是否指向同一棵树
git rev-parse A^{tree} B^{tree}
将列出其树对象的名称,或使用
git cat-file -p A
git cat-file -p B
将向您显示原始提交对象。