如何不忽略“在上游起源中找不到,而是使用HEAD”的消息?

时间:2013-03-13 18:01:20

标签: git shell deployment warnings clone

我正在编写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由于某种原因无效。

2 个答案:

答案 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