gpt4 book ai didi

git:两个非常相似的提交之间的区别?

转载 作者:太空狗 更新时间:2023-10-29 13:44:10 25 4
gpt4 key购买 nike

我需要知道为什么两个提交不同。我有两个提交,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

星期一的提交日期是我进行 rebase 的时间。现在,为什么 git 存储这个 — 似乎打败了我预期的“这些是相同的提交,我将折叠它们”的行为。

最佳答案

两次提交可能有相同的树但不同的元数据。任何时候修改、重新调整或挑选提交时,提交日期都会更新并写入新的提交。

如果 git 说提交 A 和 B 之间的差异为空,但您仍然不确定,您可以自己验证它们是否指向同一棵树

git rev-parse A^{tree} B^{tree}

这将列出它们的树对象的名称,或者用

git cat-file -p A
git cat-file -p B

这将向您显示原始提交对象。

关于git:两个非常相似的提交之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8302064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com