GitHub REST API中的tree_id字段是什么?

fykwrbwg  于 12个月前  发布在  Git
关注(0)|答案(1)|浏览(75)

四个GitHub REST API端点(例如,GitHub Docs -列出存储库的工作流运行)在工作流运行对象的head_commit对象中包含tree_id字段。
我在任何地方都找不到它的文档,不是在REST API文档中,也不是在GraphQL文档中。GitHub的文档搜索和Google也只返回这些端点的文档(以及一些检查套件端点的类似文档)。我推测tree_id是该提交的树中文件的全部内容的某种散列,这似乎是它的用途(例如,在fkirc/skip-duplicate-actions中),但这是真的吗?

4nkexdtk

4nkexdtk1#

它并不特定于GitHub的API -这与plain-old-git有关。这些都是每个提交中存在的字段。Git中的提交只是树对象+元数据。你可以在任何提交上运行git cat-file commit <rev>来查看原始提交,包括内部引用的树字段。
你的推测很接近。tree_id是被跟踪文件系统的全部内容(文件名、权限和blob)的散列。head_id是提交对象的散列,它取决于引用的树和所有提交元数据(时间戳、父节点、作者、签名……)
有关树对象和提交对象的更多信息,请参阅git手册中的10.2 Git Internals - Git Objects

相关问题