2013-03-13 41 views
2

我正在編寫shell腳本以從遠程回購部署git分支。如何不忽略「上游來源找不到,使用HEAD代替」的消息?

這是我使用的命令:(?)

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

第一解析來自'GIT中LS-remote'輸出確保分支存在? – twalberg 2013-03-13 19:11:17

回答

1

As twalbergcommentsgit 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 
+0

那麼,我必須在Shell腳本中執行此操作,並檢查每個命令的狀態(成功/失敗)。但是問題實際上克隆時分支不存在時如何不忽略警告? – 2013-03-13 20:01:07

+2

@KevinRave和答案是* *不克隆,因爲你已經在*之前檢測到*分支不存在。 – VonC 2013-03-13 20:32:20

+0

我明白了你的意思。所以這將分兩步完成。檢查repo和branch是否存在,然後執行克隆,如果存在分支。我想如果我能一次完成這個。 :-) – 2013-03-13 20:46:31