Git:通过 HTTP(s) 协议确认给定提交存在

Git: Confirm given commit is existent via HTTP(s) protocol

我们使用 git http(s) 协议(https://www.git-scm.com/docs/http-protocol;智能服务)从存储库中获取所有分支,例如GitHub 或这样的 BitBucket:

GET https://github.com/larshp/abapgit.git/info/refs?service=git-upload-pack

响应为我们提供了给定存储库中所有分支的列表。

现在我们需要确认给定的提交是否存在于特定的分支中。如果我们可以通过 git http 协议获得给定分支的提交列表,那也很好。必须如何指定此类请求?非常感谢您的帮助!

相关:Revert to any single Commit #3040

如果您想检查分支的历史记录,包括它包含的提交,您需要克隆存储库。

Git 智能 HTTP 协议旨在 (a) 枚举分支、标记和其他引用,以及 (b) 在协商双方拥有的对象后交换对象。它不提供查询远程数据的选项,因为有很多方法可以做到这一点,其中一些非常昂贵。

您的服务器实现(GitHub 或 Bitbucket)可能会通过独立的 API 提供其中一些功能,但通常遍历分支的历史不是很有效API 因为它需要很多请求,这很慢并且通常会限制你的速率。克隆是获取此信息的最快方式。