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

时间:2016-02-02 14:43:33

标签: git

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

我的问题是验证修订是否存在于给定的回购而不下载

https://stackoverflow.com/questions/1423846/convert-unicode-from-json-string-with-php中他们建议使用test $(git cat-file -t $sha) == commit,但需要本地回购。

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

1 个答案:

答案 0 :(得分:0)

您的问题取决于修订(提交)

的含义

如果您的意思是“引用”(例如标记或分支),那么您可以使用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不在引用的头部(即是祖先),那么您需要根据需要下载(clone和/或fetch)。有关更多背景信息,请参阅running git-merge on a remote中的此讨论。