在Git中删除远程分支

Air*_*ram 16 versioning git version-control

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

git push origin :name_of_branch
Run Code Online (Sandbox Code Playgroud)

当我列出远程分支时

git branch -r
Run Code Online (Sandbox Code Playgroud)

我删除的分支没有出现,但是我的合作伙伴

git fetch
Run Code Online (Sandbox Code Playgroud)

然后

git branch -r
Run Code Online (Sandbox Code Playgroud)

在列表中,name_of_branch我删除的分支仍在列表中.但是,当他试图删除分支时

git push origin :name_of_branch
Run Code Online (Sandbox Code Playgroud)

他收到了下一条消息:

error: unable to delete 'name_of_branch': remote ref does not exist
error: failed to push some refs to 'the_name_of_the_repository'
Run Code Online (Sandbox Code Playgroud)

我怎么能完全删除列表中的分支?

Jan*_*ger 25

发生这种情况是因为当您的此合作伙伴运行时git fetch,分支删除不会"应用"到其存储库中.fetch只更新并添加分支.

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

  • 仅供参考,`git remote prune`有点不赞成使用`git fetch --prune`或`git fetch -p`.请参阅[Git版本1.6.6发行说明](https://github.com/git/git/blob/v2.0.0/Documentation/RelNotes/1.6.6.txt#L162-L166):"[`git fetch --prune` make]`git remote update`和`git remote prune`不太必要(虽然没有计划删除`remote update`或`remote prune`)." (5认同)

小智 11

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

-p

--prune

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

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

git branch -D -r <remote>/<branch>
Run Code Online (Sandbox Code Playgroud)

文件中所述git branch:

使用-r连同-d删除远程跟踪分支.请注意,只有在远程存储库中不再存在远程跟踪分支或者git fetch配置为不再提取远程跟踪分支时,才有意义.