在Git中删除远程分支

时间:2013-07-19 10:24:06

标签: git version-control versioning

我想删除项目存储库的一些远程分支。我运行了下一个命令:

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'

如何完全删除列表中的分支?

3 个答案:

答案 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'