假设在我的存储库中有一个名为coolbranch的分支。

现在,我决定删除它(远程和本地):

git push origin :coolbranch
git branch -D coolbranch

太棒了! 现在这个分支真的被删除了。

但当我奔跑

git branch -a

我仍然得到:

remotes/origin/coolbranch

需要注意的是,当我克隆一个新的存储库时,一切都很好,git branch -a不显示分支。

我想知道-是否有一种方法可以在不克隆新实例的情况下从分支-a列表中删除分支?


当前回答

Try:

git remote prune origin

从Git远程文档:

修剪

删除所有过期的 <name>下的远程跟踪分支。 这些枯枝已经枯萎了 从远程存储库中删除 由<name>引用,但仍然是 在“remotes/<name>”中本地可用。 试运行选项,报告 什么树枝都要修剪,但要做 不是真的修剪。

其他回答

不要忘记精彩

git fetch -p

它把所有的起源都拿来修剪。

在我们的特定情况下,我们使用Stash作为远程Git存储库。我们试了之前所有的答案,但都没用。我们最终不得不做以下事情:

git branch –D branch-name (delete from local)
git push origin :branch-name (delete from remote)

然后当用户去拉更改时,他们需要做以下事情:

git fetch -p

Git远程修剪原点将删除所有这些陈旧的分支。这可能是你在大多数情况下想要的,但如果你只想删除特定的远程跟踪分支,你应该这样做:

git branch -d -r origin/coolbranch

(-r很容易忘记…)

在这种情况下,-r将“列出或删除(如果与-d一起使用)远程跟踪分支”

Use:

git remote prune <remote>

其中<remote>是远端源名称,如origin或upstream。

例如:git远程删除原点

Try:

git remote prune origin

从Git远程文档:

修剪

删除所有过期的 <name>下的远程跟踪分支。 这些枯枝已经枯萎了 从远程存储库中删除 由<name>引用,但仍然是 在“remotes/<name>”中本地可用。 试运行选项,报告 什么树枝都要修剪,但要做 不是真的修剪。