我想获得像git cat-file -p <COMMIT-ID>
返回的提交元数据(请参阅Git本身的示例)
$ git cat-file -p a4ee444
tree 34f4cce68fd066d044dcbca866a161fa5c98dc6b
parent 1f9c1fab6421402a9c893a2fcd35fb4cf6116166
parent ffa952497288d29d94b16675c6789ef83850def3
author Junio C Hamano <gitster@pobox.com> 1518737095 -0800
committer Junio C Hamano <gitster@pobox.com> 1518737095 -0800
mergetag object ffa952497288d29d94b16675c6789ef83850def3
type commit
tag v2.16.2
tagger Junio C Hamano <gitster@pobox.com> 1518737031 -0800
Git 2.16.2
-----BEGIN PGP SIGNATURE-----
...
-----END PGP SIGNATURE-----
Sync with 2.16.2
* tag 'v2.16.2':
Git 2.16.2
但无需使用其所有文件获取整个提交。
是否有人知道是否可以通过git
客户端程序或其他方式获取此远程信息,例如使用Git的内部传输协议?
由于
答案 0 :(得分:1)
您可以使用GitHub API get information about a commit。
例如在命令行中使用curl
:
curl -X GET https://api.github.com/repos/phdru/ppu/git/commits/63c535d7c6b151c210e344dd4b745407f3911d76
(这是我的存储库中的a commit)
对于身份验证传递-u
:
curl -u user:password …
答案 1 :(得分:1)
可以通过git客户端程序
获取此远程信息
否:即使是浅层克隆,客户也希望&#34;完成提交所需的所有对象。
或通过其他方式,比如使用Git的内部传输协议?
可能只要有一个指向它的名称,或者服务器在uploadpack.allowReachableSHA1InWant
配置为true
的存储库上运行,或uploadpack.allowAnySHA1InWant
配置为{{{ 1}}。发送者通常不会就树对象进行协商:他们只是假设你有一些对象可以通过你(作为接收者)说你有的提交。所以它不是以这种方式工作的。
请注意,提交中true
标头中的PGP签名只是从带注释的标签中复制而来。我没有尝试过,但深度 0 的浅层克隆可能会检索所有标签(仅限)。在这种情况下,您只需查看标记对象即可。这部分 旨在以这种方式工作,看起来更有前途。此外,带注释的标记对象通常具有指向它们的标记名称,因此您不需要特殊的mergetag object ...
配置条目:这些对象直接发布,因此始终&#34;想&#34; -able
(当然,您必须找到正确的标签名称,如果没有提交数据,您将如何做到这一点并不清楚。另一方面,您不清楚如何找到首先是提交哈希。)
在这种情况下,实际的标签对象是:
uploadpack