我想删除项目存储库的一些远程分支。我运行了下一个命令:
git push origin :name_of_branch
当我用
列出远程分支时git branch -r
我删除的分支没有出现,但我的合作伙伴
git fetch
以后
git branch -r
并且在列表中,我删除的分支name_of_branch
仍在列表中。但是,当他试图用
git push origin :name_of_branch
他收到下一条消息:
error: unable to delete 'name_of_branch': remote ref does not exist
error: failed to push some refs to 'the_name_of_the_repository'
如何完全删除列表中的分支?
答案 0 :(得分:24)
这是因为当你的这个伙伴运行git fetch
时,分支删除不会被应用"到他的存储库。 fetch
仅更新并添加分支。
他们可以运行git remote prune origin
来修剪其列表中不再存在于上游存储库中的远程分支。
答案 1 :(得分:11)
git fetch --prune <remote>
可用于删除跟踪远程存储库中不再存在的分支的所有远程跟踪分支(即,它们已在远程存储库中删除)。来自official Linux Kernel Git documentation for fetch
:
-p
--prune
获取后,删除遥控器上不再存在的所有远程跟踪分支。
您还可以使用命令
远程废弃远程跟踪分支git branch -D -r <remote>/<branch>
如the documentation for git branch
中所述:
将
-r
与-d
一起使用以删除远程跟踪分支。请注意,如果远程存储库中不再存在远程跟踪分支,或者git fetch
配置为不再提取它们,则删除它们才有意义。
答案 2 :(得分:1)
git branch -r -d 'remote-branch'