31

我有一个远程存储库和 2 个克隆。
我在其中一个克隆中创建了一个分支,例如test. 我做了一些工作和 2 次提交。我合并到master分支和push -u分支。
git pull在另一个克隆中做了一个。
我同时看到mastertest
在我做的第一个克隆项目中:
git origin :test删除test远程存储库上的分支。
test在远程仓库中被删除。
我这样做git branch -D test了,test分支也被本地删除了。
如果我这样做,git branch -a我会得到:

*master  
remotes/origin/master    

现在在第二个存储库中我做了一个git pull.
在拉动时,本地test似乎已被删除,但git似乎“认为”远程test分支仍然存在。
如果我这样做,git branch -a我会得到:

* master  
  remotes/origin/HEAD -> origin/master  
  remotes/origin/master  
  remotes/origin/test    

为什么删除的test分支显示为远程分支?

4

2 回答 2

55

git fetch(因此)的默认选项git pull不会修剪已删除的远程分支。我不确定这个默认值背后的逻辑是什么。无论如何,要修剪已删除的远程分支,请使用

git fetch -p

或运行

git remote prune [-n] <name>

明确地。使用该-n标志,它将报告哪些分支将被修剪,但实际上并不修剪它们。有关更多信息,请参阅git-fetch(1)git-remote(1)

于 2013-06-15T22:59:16.370 回答
13

尝试使用此命令git remote prune origin。删除的分支应该消失。这应该删除对远程分支的本地引用。

于 2013-06-15T22:39:05.433 回答