如何检查某个远程上是否存在 Git 提交?

How to check whether a Git commit exists on some remote?

我想检查特定的 Git 提交 sha1 是否存在于特定的远程上。我尝试了以下命令:

git fetch <remote> <revision> -q --dry-run

问题是命令 returns 不仅在远程存在修订时成功,而且在本地存在时也成功。

有没有什么方法可以在忽略本地修订的情况下进行检查?

如果你已经获取了所有的remote heads,你可以试试

$ git branch -r --contains <commit-sha>

这将为您提供包含提交的分支列表,您可以查看结果是否包含远程分支。

如果你想让它在没有获取远程的情况下工作,那么服务器端配置必须存在:uploadpack.allowReachableSHA1InWant=true 并且服务器和客户端的 git 版本必须 >= 2.5

添加 --depth=1 似乎有效。

我无法解释它为什么起作用,而且我在文档中找不到任何提及。如果我需要一个强大的解决方案,可能不会依赖这个。