如何检查远程Git仓库中是否存在某个版本(提交)?

6

我正在处理一个应用程序,该应用程序从 git 存储库部署其他应用程序到服务器上,用户可以选择要部署的修订版本。

我的问题是验证给定存储库中的修订版本是否存在而不需要下载它

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

有可能通过其 URL 检查远程存储库中的修订版本是否存在吗?

1个回答

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接