在Git中删除远程分支

17

我想删除项目仓库中的一些远程分支。 我运行了下面的命令:

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'

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


重复的问题:如何在本地和远程同时删除 Git 分支? - user456814
3个回答

26

这是由于当你的合作伙伴运行git fetch时,分支删除操作没有被“应用”到他的代码库中。 fetch只更新和添加分支。

他们可以运行git remote prune origin来清理掉在远程仓库中已不存在的分支列表。


5
FYI,“git remote prune”已经有些被淘汰了,现在更推荐使用“git fetch --prune”或“git fetch -p”。请参考Git版本1.6.6发行说明:“[git fetch --prune] 使 git remote updategit remote prune 不那么必要(虽然没有计划删除remote updateremote prune)。”。 - user456814

11

git fetch --prune <remote> 可以用于删除所有远程跟踪分支,这些分支正在跟踪不再存在于远程存储库中的分支(即它们在远程存储库中被删除)。来自官方Linux内核Git文档fetch

-p

--prune

获取后,删除任何不再存在于远程的远程跟踪分支。

您还可以使用以下命令删除过时的远程跟踪分支:

git branch -D -r <remote>/<branch>

git branch文档所述:

使用-r-d一起删除远程跟踪分支。请注意,仅当远程存储库中不再存在这些分支或者git fetch未配置为再次获取它们时,才有意义删除远程跟踪分支。


1
git branch -r -d 'remote-branch'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接