Py学习  »  Git

git:如果我在两个不同的系统上进行相同的更改来提交元数据,我会得到相同的散列吗?

SilverWolf • 5 年前 • 1629 次点击  

我有一个正在开发的小应用,我有两个不同的存储库:一个在我的Mac电脑上,一个在我的Windows系统上。现在他们 应该 包含相同的内容(我刚从windows存储库拉到mac存储库)。

现在我想 change the author information 为发布做准备的所有提交。

如果我这样做 分别地 在每个存储库中,它们是否仍然兼容,或者我必须将其中一个从另一个中删除?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46954
 
1629 次点击  
文章 [ 2 ]  |  最新文章 5 年前
SilverWolf
Reply   •   1 楼
SilverWolf    6 年前

我刚试了一下,得到了 相同的散列 两次都是。

我的猜测是,由于我只更改了作者信息(姓名和电子邮件),时间戳都保持不变,因此散列是相同的。

bk2204
Reply   •   2 楼
bk2204    6 年前

git在commit对象中包含各种信息。所有这些信息都被分解到对象的散列中;如果其中任何信息不同,散列也会不同。包含在每个提交中的是

  • 树对象的哈希(取决于每个跟踪的文件和目录)
  • 前一个提交(或提交,如果是合并)的哈希
  • 作者的姓名、电子邮件、时间戳和时区
  • 提交者的姓名、电子邮件、时间戳和时区
  • gnupg签名,如果有的话
  • 提交消息

因此,如果您在两台机器上进行更改,除非它们在完全相同的时间戳上进行更改,否则散列将不同,因为作者和提交者的时间戳将不同。