让我们说我的存储库中有一个名为coolbranch
的分支。
现在,我决定用以下方法删除它(远程和本地):
git push origin :coolbranch
git branch -D coolbranch
大! 现在分支真的被删除了。
但是当我跑步时
git branch -a
我仍然得到:
remotes/origin/coolbranch
需要注意的是,当我克隆一个新的存储库时,一切都很好,git branch -a
没有显示分支。
我想知道 - 有没有办法从branch -a
列表中删除分支而不克隆新实例?
答案 0 :(得分:599)
git remote prune origin
,如其他答案所示,将删除所有此类陈旧的分支。这可能是大多数情况下你想要的,但是如果你想删除那个特定的远程跟踪分支,你应该这样做:
git branch -d -r origin/coolbranch
(-r
很容易忘记......)
-r将“列出或删除(如果与-d一起使用)远程跟踪分支。”根据这里找到的git文档:https://git-scm.com/docs/git-branch
答案 1 :(得分:257)
您尝试过:git remote prune origin
<强>剪枝强>
删除所有失效 远程跟踪分支在&lt; name&gt;下。 这些过时的分支已经存在 从远程存储库中删除 由&lt; name&gt;引用,但仍然是 在“遥控器/&lt;名称&gt;”中本地可用。
用--dry-run选项,报告 什么分支将被修剪,但做 实际上并没有修剪它们。
答案 2 :(得分:202)
不要忘记真棒
git fetch -p
获取并修剪所有来源。
答案 3 :(得分:18)
在我们的特定情况下,我们使用Stash作为我们的远程git repo。我们尝试了以上所有内容,但没有任何工作。我们最终不得不做以下事情:
git branch –D branch-name (delete from local)
git push origin :branch-name (delete from remote)
然后,当用户进行更改时,他们需要执行以下操作:
git fetch -p
答案 4 :(得分:16)
git remote prune <remote>
其中<remote>
是远程源名称,如 origin 或 upstream 。
示例:git remote prune origin