【问题标题】:How is a Git Commit Object SHA1 Created?Git 提交对象 SHA1 是如何创建的?
【发布时间】:2015-05-07 18:00:51
【问题描述】:

我了解 blob sha1 是如何创建的,我了解标签哈希计算的内容。谁能告诉我或将我指向解释提交对象哈希创建的适当文档?

【问题讨论】:

  • 它看起来与git cat-file -p HEAD 的输出完全一样,但前面带有“commit ”。

标签: git


【解决方案1】:

此 (Git Objects) 页面的底部解释了如何生成对象并将其传递给散列函数。

基本上,git 获取您正在存储的项目的内容,生成带有 blob 长度的标头,将它们组合在一起 (store = header + content),并获取 @987654323 的 SHA1 哈希@。

【讨论】:

  • 嗨 Ryan,它明确说明了提交对象由什么组成,可以弄清楚它是如何完成的,但是对于提交对象的 SHA1 生成没有明确的描述跨度>
【解决方案2】:

好吧,我想通了。

在创建提交 sha 对象时进行以下操作

  1. 树对象引用
  2. 父对象引用
  3. 作者姓名
  4. 作者提交时间戳与时区(例如,对我来说是 +530) [可能与提交者不同,例如在樱桃采摘的情况下]李>
  5. 提交者姓名
  6. 提交带有时区的时间戳(例如,对我来说是 +530)
  7. 提交信息

我试图弄清楚为什么在重置后提交 SHA id 不同,并再次添加由具有相同父对象和树对象引用的同一用户使用完全相同的提交消息的同一文件。

现在我知道它的时间戳了。 想分享这个。

【讨论】:

  • 您应该问过您的实际问题“为什么 SHA 不同”。例如,它是 stackoverflow.com/questions/23791999/… 和其他人的副本。
  • 感谢您的链接;顺便说一句,它并没有提到父母
猜你喜欢
  • 2012-08-18
  • 1970-01-01
  • 2013-12-26
  • 1970-01-01
  • 2016-10-10
  • 1970-01-01
  • 2012-02-06
  • 1970-01-01
  • 2015-08-23
相关资源
最近更新 更多