我通过git branch -d 分支名称
命令删除了某些本地分支,但它们仍然存在于自动补全中(当我键入git checkout
,然后按tab
键时,我会在列表中看到所有已删除的分支)。
我尝试过运行git gc
和git prune
命令,但没有任何改变。
TL;DR - 真正的答案:
$ git remote prune origin
稍微详细一些:
如果foo-branch没有合并到你当前的分支中,git branch -d foo-branch
将无法删除它。
如果旧分支已经被合并了,清理远程上的旧分支也是一个好主意。你可以通过命令行执行 git push origin :foo-branch
来完成此操作。
然而,旧的“幽灵”分支foo-branch将会在自动补全git checkout时继续存在。显然,git缓存了可用于远程的分支。通过调用以下命令来清除缓存:
$ git remote prune origin
$ git branch -D branchname
$ git push origin :branchname
origin/branchname
,然后更改已与 origin/master
合并,并且在远程上删除了 origin/branchname
。 我仍然可以在自动完成中看到 branchname
和 origin/branchname
。 origin/branchname
没问题,我只想删除本地的,因为有太多已删除的分支。 - user1486054git branch -a
不显示任何内容。问题只存在于检出自动完成中。 - user1486054git remote prune origin
来更新本地仓库。无论如何,感谢你的回答! - user1486054git push origin :branchname
)更容易了,因为完成脚本学会了如何完成“git push --delete b<TAB>
”(以完成要删除的分支名称)。avar
)。gitster
--在提交f70b541中合并)
你可能尝试删除一个未合并的分支,所以git branch -d 分支名
没有删除它。
你可以使用以下命令检查该分支是否仍然存在:
git branch -a
如果你非常确定要删除该分支即使它没有被合并
,你可以使用以下命令强制删除:
git branch -D branchname
git branch -a
只显示远程分支。已删除的本地分支只能在检出自动完成中看到。 - user1486054我曾经遇到过这个问题,之前的解决方案对我没有用。后来发现在仓库中有一个与旧删除分支同名的标签。您可以使用以下命令删除标签:
git tag -d [标签名称]
要远程删除它:
git push origin :refs/tags/[标签名称]
感谢https://nathanhoad.net/how-to-delete-a-remote-git-tag提供的帮助。
我知道这篇文章非常老了,但是我刚遇到了这个问题,在我的情况下,我已经修剪了origin
中的分支,但没有修剪origin-http
中的分支。
我通常不使用http进行克隆,所以这通常不是一个问题,但是...好吧。
一旦我执行了git remote prune origin-http
,它就为我解决了问题。
git branch -D the_local_branch
命令。但要小心。即使分支没有合并,这将删除该分支。 - TheOneWhoPrograms