git远程分支被删除但仍出现在'branch -a'中

yon*_*nix 505 git git-branch

让我们说coolbranch我的存储库中有一个分支.

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

git push origin :coolbranch
git branch -D coolbranch
Run Code Online (Sandbox Code Playgroud)

大!现在分支真的被删除了.

但是当我跑步的时候

git branch -a
Run Code Online (Sandbox Code Playgroud)

我还是得到:

remotes/origin/coolbranch
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*air 629

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

git branch -d -r origin/coolbranch
Run Code Online (Sandbox Code Playgroud)

(-r很容易忘记......)

-r在这种情况下将"列出或删除(如果与-d一起使用)远程跟踪分支." 根据这里找到的git文档:https://git-scm.com/docs/git-branch

  • 在我的情况下,`git remote prune origin`或任何形式的`git fetch --prune`标记对我来说都不起作用....但是`git branch -d -r origin/feature/branch-name`确实有效.我不确定它是否与它在'feature`命名空间(git flow)之间有关,但这就是它如何发生故障,以防任何googlers发现它们发生在他们身上. (10认同)
  • 这有必要吗?将这些不存在的分支名称留在列表中并且不会自动修剪它们似乎非常糟糕. (7认同)
  • @akronymn 有一个配置标志,您可以设置自动执行此操作:将 `fetch.prune` 设置为 `true` (参见[此答案](/sf/answers/4185483991/)) (4认同)
  • @akronymn 同意。git 中有很多奇怪的默认行为 (3认同)

Bri*_*ips 275

你试过了吗: __CODE__

git远程文档:

修剪

删除<name>下的所有陈旧远程跟踪分支.这些陈旧的分支已从<name>引用的远程存储库中删除,但仍在"remotes/<name>"中本地可用.

使用--dry-run选项,报告将修剪哪些分支,但实际上不要修剪它们.

  • 为了完整起见:它必须类似于http://stackoverflow.com/a/17983126/94687中提到的“git pull --prune”以及:“git remote update --prune” (4认同)

ori*_*rip 212

别忘了太棒了

git fetch -p
Run Code Online (Sandbox Code Playgroud)

它取出并修剪所有来源.

  • 但是如果你运行`git branch -a`,分支仍然可见 (2认同)

小智 18

在我们的特定情况下,我们使用Stash作为我们的远程git仓库.我们尝试了以上所有内容,但没有任何工作.我们最终不得不做以下事情:

git branch –D branch-name (delete from local)
git push origin :branch-name (delete from remote)
Run Code Online (Sandbox Code Playgroud)

然后当用户进行更改时,他们需要执行以下操作:

git fetch -p
Run Code Online (Sandbox Code Playgroud)


lik*_*ppy 18

git remote prune <remote>
Run Code Online (Sandbox Code Playgroud)

<remote>远程源名称在哪里,如originupstream.

例: git remote prune origin

  • 对于未来的读者来说,这里是[`git remote prune`,`git prune`,`git fetch --prune`]之间的区别(http://stackoverflow.com/questions/20106712/what-are-the-differences-between -git-远程剪枝-GIT-剪枝-git的取入剪枝). (3认同)

小智 13

我一直在使用

git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -D
Run Code Online (Sandbox Code Playgroud)

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


归档时间:

查看次数:

107995 次

最近记录:

5 年,10 月 前