如何检查远程 Git 存储库中是否存在修订(提交)

Man*_*iel 5 git

我正在开发将其他应用程序从 git repo 部署到服务器的应用程序,并且有一个选项可供用户选择要部署的修订版。

我的问题是在不下载的情况下验证给定 repo 中存在修订版。

在类似的问题中,他们建议使用,test $(git cat-file -t $sha) == commit但需要本地回购。

是否可以通过其 URL 检查远程仓库上是否存在修订版?

qne*_*ill 3

您的问题取决于您所说的修订(提交)的含义

如果您的意思是“引用”(例如标签或分支),那么您可以使用git-ls-remote来检查存储库是否有它而无需下载它。

如果您的意思是“提交 ID”(例如 SHA),那么这取决于该提交是否是远程存储库中当前引用的头部。如果是这样,那么 'git ls-remote --heads --tags' 将显示当前头的 SHA,例如使用命令行:

$ git ls-remote --heads --tags origin
From git@git.company.com:proj/path
05f1351c4d2aef79e0f52ef32868f5f56e4bf264        refs/heads/dev
2e5df15c40441428c8c0a622bfd8c59d124fc9c7        refs/heads/master
05e1351f4d2aef79e0f522f33868f5f56e4bf264        refs/heads/prod
05e1351f4d2aef79e0f522f33868f5f56e4bf264        refs/heads/stage
05e1351f4d2aef79e0f522f33868f5f56e4bf264        refs/heads/test
Run Code Online (Sandbox Code Playgroud)

然而,如果该 SHA 不在引用的开头(即是祖先),那么您将需要下载(根据需要克隆和/或获取)。有关更多背景信息,请参阅在远程运行 git-merge中的讨论。