如何在本地git仓库中删除远程分支?

51

在执行 git fetch 后,我本地的 Git 仓库中所有远程分支都会作为远程分支显示。

如何有选择地从我的本地仓库中删除远程分支(而不是远程仓库)?

2个回答

79

我遇到的问题略有不同,但解决方法可能对其他遇到此问题的人有用...

我发现我的本地仓库仍保留着在远程不存在的分支,所以我想将它们删除。解决办法很简单,只需使用带有--prune(或-p)选项的fetch命令:

git fetch --prune

11
这是实际的解决方案。 - abhisekp
我同意Thomas的看法。 - Daviiid
1
这是可行的解决方案,如果远程分支在服务器端已经被删除。它实际上同步其分支引用,在本地删除不存在于远程的内容。向上,向上,向上。 - peterh
3
请注意,这并不会删除过去曾经从远程获取并在本地检出(可能已经推送到远程,也可能没有)的本地分支。这些分支仍需通过git branch -d <分支>(或甚至是 git branch -D <分支>)进行删除。 - Izzy
如果您正在尝试删除不再存在于远程的分支,则这是唯一的实际解决方案。我不得不使用“git branch -r -d remote/branch”解决方案,因为我试图删除一个其远程已被删除的分支。 - Jason

64

git branch -r -d remote/branch

你还需要重新配置fetch以避免以后再次获取此分支


2
如何重新配置fetch? - dbaugh
4
因为我也刚查阅了此问题 - 你需要编辑 .git/config 文件,然后修改 [remote "origin"] 或者其他相关部分的内容。将 fetch = +refs/heads/*:refs/remotes/github/* 替换为 fetch = +refs/heads/master:refs/remotes/github/master ,这样只会拉取 master 分支。我认为你可以添加多个 fetch 来拉取更多的分支,但是不确定如何排除某些分支。 - Andrew Taylor
如果远程分支在远程端已经被删除,那么它将无法工作。在这种情况下,请查看@ThomasLevesque的回答。 - peterh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接