我正在研究将其他应用程序从git repo部署到服务器的应用程序,并且用户可以选择要部署的修订版本。
我的问题是验证给定存储库中是否存在修订,而不下载。
在similar question中,他们建议使用test $(git cat-file -t $sha) == commit
,但需要本地存储库。
是否可以通过URL检查远程仓库中是否存在修订版本?
最佳答案
您的问题取决于版本(commit)的含义。
如果您指的是“引用”(例如标记或分支),则可以使用git-ls-remote来检查存储库是否具有它,而无需下载它。
如果您的意思是“commit 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中的讨论。
关于git - 如何检查修订(提交)是否存在于远程Git存储库中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35156453/