如何获取git中索引的树形哈希?

Shu*_*hum 4 git

使用 git,如何获取分阶段更改的树哈希?也就是说,如果我提交了更改,提交的树哈希(不是提交哈希)将是什么?

tor*_*rek 7

最简单的方法是提交树:

\n\n
git commit-tree\n
Run Code Online (Sandbox Code Playgroud)\n\n

解释

\n\n

您不必进行完整的提交\xe2\x80\x94,尽管这当然也可以。您只需要提交所具有的快照。

\n\n

幸运的是,有效的方法git commit是分几个阶段构建提交。曾经git commit有一个简单的 shell 脚本,它运行这些其他更基本的 Git 命令:1

\n\n
    \n
  1. git write-tree:这不需要参数,并且\xe2\x80\x94如果成功的话\xe2\x80\x94从现在索引中的任何内容创建一个树对象,并将哈希ID打印到其标准输出。

  2. \n
  3. git commit-tree:这需要几个参数(您选择的多个父哈希 ID 和一个树哈希 ID)和一条提交消息,并构建一个提交对象。提交的快照是您为其提供哈希 ID 的树,它来自步骤 1。该命令将新提交对象的哈希 ID 打印到其标准输出。

  4. \n
  5. git update-ref:这会更新引用,例如分支名称。它至少需要两个参数:要更新的名称和新值(或指示“删除名称”的标志)。

  6. \n
\n\n

您想要的只是第一步。

\n\n
\n\n

1git update-ref可能比提交 shell 脚本更新,因为在过去的糟糕日子里,编写 ref 仅意味着使用适当的echo命令。符号HEAD引用只是一个符号链接。参考资料从来没​​有打包过。一旦引用变得更花哨并且需要锁定,git update-ref就变得必要了。

\n