git远程分支被删除但仍出现在'branch -a'中

时间:2011-02-23 17:10:58

标签: git git-branch

让我们说我的存储库中有一个名为coolbranch的分支。

现在,我决定用以下方法删除它(远程和本地):

git push origin :coolbranch
git branch -D coolbranch

大! 现在分支真的被删除了。

但是当我跑步时

git branch -a

我仍然得到:

remotes/origin/coolbranch

需要注意的是,当我克隆一个新的存储库时,一切都很好,git branch -a没有显示分支。

我想知道 - 有没有办法从branch -a列表中删除分支而不克隆新实例?

5 个答案:

答案 0 :(得分:599)

git remote prune origin,如其他答案所示,将删除所有此类陈旧的分支。这可能是大多数情况下你想要的,但是如果你想删除那个特定的远程跟踪分支,你应该这样做:

git branch -d -r origin/coolbranch

-r很容易忘记......)

在这种情况下,

-r将“列出或删除(如果与-d一起使用)远程跟踪分支。”根据这里找到的git文档:https://git-scm.com/docs/git-branch

答案 1 :(得分:257)

您尝试过:git remote prune origin

来自git remote docs

<强>剪枝

  

删除所有失效   远程跟踪分支在&lt; name&gt;下。   这些过时的分支已经存在   从远程存储库中删除   由&lt; name&gt;引用,但仍然是   在“遥控器/&lt;名称&gt;”中本地可用。   

用--dry-run选项,报告   什么分支将被修剪,但做   实际上并没有修剪它们。

答案 2 :(得分:202)

不要忘记真棒

git fetch -p

获取并修剪所有来源。

答案 3 :(得分:18)

在我们的特定情况下,我们使用Stash作为我们的远程git repo。我们尝试了以上所有内容,但没有任何工作。我们最终不得不做以下事情:

git branch –D branch-name (delete from local)
git push origin :branch-name (delete from remote)

然后,当用户进行更改时,他们需要执行以下操作:

git fetch -p

答案 4 :(得分:16)

git remote prune <remote>

其中<remote>是远程源名称,如 origin upstream

示例:git remote prune origin