删除了远程分支,但它仍然出现在分支-a中

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

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

git push origin :coolbranch
git branch -D coolbranch

太好了! 现在分支真的被删除了。

但当我奔跑

git branch -a

我仍然得到:

remotes/origin/coolbranch

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

我想知道-有没有办法在不克隆新实例的情况下从branch -a列表中删除分支?

198213 次浏览

尝试:

git remote prune origin

git远程留档

修剪

删除所有过期 下的远程跟踪分支。 这些陈旧的树枝已经被 从远程存储库中删除 被引用,但仍然是 本地可用的“远程/”。

使用--dry-run选项,报告 哪些树枝会被修剪,但是 #36825;,而不是把它们切开

git remote prune origin将删除所有这些陈旧的分支。这可能是你在大多数情况下想要的,但是如果你只想删除那个特定的远程跟踪分支,你应该这样做:

git branch -d -r origin/coolbranch

-r很容易忘记…)

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

别忘了最棒的

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 remote prune <remote>

其中<remote>是一个远程源名称,例如起源上游

示例:git remote prune origin

我一直在用

git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -D

以删除指向合并分支的本地分支。