2011-11-01 33 views
19

命令git branch -a列出了一堆不在存儲庫上的分支,而不是本地分支。這些如何被刪除?刪除由git branch列出的分支-a

* develop 
    master 
    remotes/origin/cloner 

例如,remotes/origin/cloner用於回購存在,但它已被刪除,我想它不會打字git branch -a時出現。

回答

27

如果你有這些相應的分支已經在遠程倉庫中被刪除後留下的遠程跟蹤分支(如origin/cloner在這種情況下),你可以刪除所有此類遠程跟蹤分支有:

 
git remote prune origin 

documentation for git remote解釋說這是:

刪除下<名>所有過時遠程跟蹤分支。這些陳舊的分支已從<名稱>引用的遠程存儲庫中刪除,但仍在本地可用的「遠程/ <名稱>」。

使用--dry-run選項,報告將修剪哪些分支,但不實際修剪它們。

+4

這是麥汁h擴展到這個,也許只是通過引用和鏈接到文檔。 –

+0

謝謝Mark,偉大的編輯! –

-5

也可能發生遠程存儲庫引用已從本地克隆中刪除,但仍出現在'git branch -a'命令的輸出中。 在任何情況下,你總是可以簡單地通過刪除相應的文件禁止任何參考:

$ rm -f .git/refs/remotes/cloner 
$ rm -rf .git/refs/remotes/deprecated_remote 
+0

直接從'.git'下直接刪除文件而不是使用瓷器命令來做這件事是一個壞主意。 –

+0

Git非常強大。編輯.git/config文件通常非常方便,例如爲給定分支添加跟蹤或更改遠程存儲庫的URL。 通過直接觀察引擎蓋,一旦可以更輕鬆地瞭解Git如何工作,並意識到它與第一次出現一樣神奇。 因此,我不建議每個人都在編輯引擎蓋下的Git文件,但我會建議他們至少在這些文件中有一個戰利品。在最低限度,這是非常有益的。 –

3

要刪除其中不需要了,那麼你可以使用下面的命令分支:

git branch -d -r origin/cloner 
+1

這需要'git branch -d -r origin/cloner',因爲'origin/cloner'是一個遠程跟蹤分支。 –

0

也做

git push origin :cloner 

刪除不需要的遠程分支機構

+0

在這種情況下,分支'cloner'已經從遠程倉庫中刪除,所以這會產生一個錯誤。問題是如何刪除遠程跟蹤分支「origin/cloner」,這是在某人刪除'origin'中的'cloner'後留下的。 –

+0

我明白了。那麼,git fetch會不會刷新遠程分支列表? – Patrick