为什么我看到已删除的远程分支?

时间:2013-08-21 07:38:28

标签: git

使用命令git branch -a我看到几个remotes/origin/branchname用于已从服务器删除的远程分支。为什么会发生这种情况以及如何更新列表?谢谢。

3 个答案:

答案 0 :(得分:6)

这是git设计的。

对于您使用的每个远程存储库的每个分支,git在remotes/<remote name>/下创建一个本地副本。这些被称为“远程跟踪分支”。

如果从远程存储库中删除原始分支,git将不会自动删除您的本地远程跟踪分支。毕竟,你可能仍然需要它:也许你建立了一个本地分支,或者你打算,或者你仍然需要它作为参考......

所以为了安全起见,git会保留分支机构。要摆脱它,你可以:

  • 使用git branch -rd <remote name>/<branch name>
  • 直接删除它
  • 运行git remote prune origin(或使用git fetch --prune)删除远程不再存在的所有远程跟踪分支

git branch -rd的优势在于它也可以离线工作,而第二个选项需要访问遥控器。

答案 1 :(得分:1)

git fetch通常只更新已更改的远程分支。如果添加--prune,它还将删除上游不再存在的所有远程分支。

答案 2 :(得分:0)

您可以使用git origin prune删除过时的远程分支。您可以看到它们,因为您在本地分支中跟踪它们