2014-02-25 30 views
5

我讀到this question的答案git fetch origin應該取全部分支的原產地。但就我而言,它似乎並沒有給我任何分支。以下是我所做的:git fetch origin沒有獲取所有分支

最初,遠程被叫原點有7個分支。我克隆它。 git branch然後只返回master。我沒有git fetch origin,git branch仍然只顯示master。我如何獲得其他6個分支而不單獨獲取它們?

+0

可能重複[git fetch無法獲取所有分支](https://stackoverflow.com/questions/11623862/git-fetch-doesnt-fetch-all-branches) –

回答

10

您擁有全部7家分店,但git branch只顯示當地分店。即使你現在在你的系統上有本地的分支數據,它們仍然被認爲是「遠程分支」。 你可以用git branch -a看到它們。他們將被稱爲像remotes/origin/branchname。你可以通過指定這個全名來檢查它們:git checkout remotes/origin/branchname

此外,當您克隆存儲庫時,您已經擁有了所有這些分支。運行git fetch origin將簡單地使用自上次獲取(或克隆)以來發生的任何新事件更新您的存儲庫。

你可以閱讀更多關於git的文檔中遠程分支:Git Branching - Remote Branches

0

雖然這個問題被提問題的回答,這裏是實打實的:你感到困惑的原因是因爲git fetch會告訴你它在新的遠程,但它不會顯示任何東西(git克隆)時首先克隆回購。所以克隆只創建本地主分支。因爲它默認檢查出來。檢出它會在本地創建。

所以基本上你需要做的是你在開始時指出的:單獨檢查所有分支。所以基本上你得到的是這樣的:

git branch -a | grep origin | sed "[email protected]*origin/@@" | while read f; do 
    git checkout $f 
done 

可能有更多的低層次的「管道工」命令,可以做到這一點,但基本上這是它從用戶的角度。其實,答案似乎是你可以直接創建本地分支。

git branch -a | grep origin | sed "[email protected]*origin/@@" | while read f; do 
    git branch $f origin/$f 
done 

但是,這可能不會設置跟蹤分支。從How to clone all remote branches in Git?

相關問題