命令git branch -a
列出了一堆不在存储库上的分支,而不是本地分支。怎么能删除这些?
* develop
master
remotes/origin/cloner
例如,remotes/origin/cloner
曾经存在于repo中,但它已被删除,我希望在键入git branch -a
时不显示。
答案 0 :(得分:27)
如果您在远程存储库中删除了相应的分支后遗留了远程跟踪分支(例如本例中为origin/cloner
),则可以删除所有此类远程跟踪分支: / p>
git remote prune origin
documentation for git remote
将此解释为:
删除< name>下的所有陈旧远程跟踪分支。这些陈旧的分支已从< name>引用的远程存储库中删除,但仍在“remotes /< name>”中本地可用。
使用
--dry-run
选项,报告将修剪哪些分支,但实际上不修剪它们。
答案 1 :(得分:3)
要删除不再需要的分支,可以使用以下命令:
git branch -d -r origin/cloner
答案 2 :(得分:0)
你也做
git push origin :cloner
删除不需要的远程分支
答案 3 :(得分:0)
如果您想保留 main
和 develop
分支并从 git 存储库中删除所有本地分支,那么这可能会有所帮助。
删除所有本地分支除了main和develop:
git branch -a | egrep -v "(^\*|main|develop)" | xargs git branch -d
答案 4 :(得分:-5)
也可能发生远程存储库引用已从本地克隆中删除,但仍出现在'git branch -a'命令的输出中。 在任何情况下,只需删除相应的文件即可始终禁止任何引用:
$ rm -f .git/refs/remotes/cloner
$ rm -rf .git/refs/remotes/deprecated_remote