我正在编写shell脚本以从远程仓库部署git
分支。
这是我正在使用的命令:
git clone -q --depth=1 https://my.repourl.com/git-repo.git /my/destination/folder -b develop
问题是,如果分支(在这种情况下开发)是错误的,它只是忽略并从主分支(?)中拉出。我收到这条消息:
warning: Remote branch devel not found in upstream origin, using HEAD instead
我只想让git死掉/退出,如果找不到指定的分支。有什么标志吗?
还是其他选择? git-archive
由于某种原因无效。
答案 0 :(得分:1)
作为twalberg comments, git ls-remote --heads https://my.repourl.com/git-repo.git
是用于检查远程端是否存在分支的命令。
问题“How to check if remote branch exists on a given remote repository?”列出了另一种可能性:
git clone -n
git fetch
# parse git branch -r
测试(bash)可能如下所示:
br=$(git ls-remote --heads https://my.repourl.com/git-repo.git|grep abranch)
if [[ "${br}" != "" ]]; then
git clone -b aBranch ...
fi
答案 1 :(得分:0)
我得到的行为与Kevin在git v1.7.1中发布的行为相同-但是在使用git v2.12.0进行测试时, clone 命令确实在以下情况下实际上会失败指定了一个不存在的分支:
$ git clone --depth 1 -b FakeBranch --bare gitserver:/repo.git
Cloning into bare repository 'repo.git'...
warning: Could not find remote branch FakeBranch to clone.
fatal: Remote branch FakeBranch not found in upstream origin