从Git中删除旧的远程分支
当我在Git中使用bash自动完成function时,它会一直显示我不再拥有的旧遥控器的分支。 当我做一个git branch -la它显示了那些旧的遥控器和分支,而一个git branch -l不会。 一个ls .git/refs/remotes/也会显示它们。 但是,它们不在我的.git / config目录中,当我运行git remote show时,它们都不git remote show 。 
那么我该如何摆脱它们,因为我的自动完成列performance在太长了。
我已经试过了:
 git reflog expire --expire=now --all git gc --prune=now rm .git/refs/remotes/theoldremote git remote prune theoldremote 
我也意识到,我可以重新克隆回购,但这只是作弊;-)
如果分支在远程存储库中被删除,Git不会自动删除(本地)远程跟踪分支。 另外,在V2.0.1之前,当你从你的gitconfiguration中移除远程设备时,远程追踪分支在某些情况下不会被删除(参见VonC的答案)。
要删除某个远程存储库的陈旧远程跟踪分支(在远程存储库中被删除的分支),请运行
 git remote prune <remote> 
 引用man page或git remote : 
修剪
删除<name>下的所有陈旧的跟踪分支。 这些陈旧的分支已经从<name>引用的远程存储库中被删除,但仍然在“remotes / <name>”中本地可用。
使用–dry-run选项,报告将修剪哪些分支,但不实际修剪它们。
 然而,从你的问题看来,你似乎手动删除.git/refs/remotes/theoldremote ,所以Git不再知道远程跟踪分支所属的远程存储库。 这不是你应该这样做的。 
删除远程仓库的正常方法是运行
 git remote rm <remote> 
 这将从您的.git/config删除远程,并将删除远程跟踪分支。 
 如果您只是删除.git/refs/remotes/下的.git/refs/remotes/ ,分支将保持在后面。 那么你将需要手动删除它们: 
 git branch -rd <remote>/<branchname> 
 您需要使用选项-r删除远程分支。 
我用
 git push origin :remote_branch 
从服务器删除分支。
 git remote prune origin 
删除服务器上不存在的远程引用
 注意:虽然git remote prune是答案,但要知道,从git 2.0.1(2014年6月25日)开始, git remote rm 首先删除远程跟踪分支 。 
 所以希望在一个git remote rm之后,不应该清理旧的分支。 
 参见JensLindström ( jensl )的 commit b07bdd3 
  remote rm :删除远程configuration作为最后一个 
删除远程时,删除远程跟踪分支,然后删除远程configuration。
这样,如果操作失败或在删除远程跟踪分支时被中止,则可以重新运行该命令以完成操作 。
什么也不推送到分支去删除它:
 git push remote :remote_branch 
这是在文档中的某个地方,但不是很明显。
还是我误解了你的问题?
好吧,我已经知道了。 问题是遥控器不再存在,但他们在git数据库中的某处。 我重新添加了遥控器,然后
 git remote prune theremote git remote rm theremote git gc --prune=now 
之后,他们从列表中消失。 不知何故,我没有正确地删除他们之前,我猜。