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'

我怎样才能完全删除列表的分支?

4

3 回答 3

26

发生这种情况是因为当您的这个伙伴运行git fetch时,分支删除不会“应用”到他的存储库。fetch只更新和添加分支。

他们可以运行git remote prune origin以修剪列表中不再存在于上游存储库中的远程分支。

于 2013-07-19T10:48:24.360 回答
11

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

-p

--prune

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

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

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

文档中所述git branch

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

于 2013-07-19T11:58:13.867 回答
1
git branch -r -d 'remote-branch'
于 2013-07-19T10:35:19.897 回答