短回答
如果你希望更详细解释下列命令,然后在下一部分中看到的长答案。
删除远程分支:
git push origin --delete <branch> # Git version 1.7.0 or newer
git push origin :<branch> # Git versions older than 1.7.0
删除本地分支:
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches
如果删除某个远程跟踪分支:
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p # Shorter
长回答 : 有3 种不同的分支删除 !
当我们处理删除在本地和远程分支,请记住 涉及有3 种不同的分支:
- 本地分支
X
. - 远程origin分支
X
. - 本地远程跟踪分支
origin/X
能够跟踪远程分支 X
.

使用原始的发布者
git branch -rd origin/bugfix
它只删除了本地远程跟踪分支 origin/bugfix
,而不是实际远程分支 bugfix
上 origin
.

才能真正删除该图片远程分支,需要
git push origin --delete bugfix

其他Details
下面几节将介绍更多详细信息时需要考虑删除远程分支和远程跟踪。
删除远程分支推送到远程追踪分支也会删除
请注意,删除远程分支 X
在命令行中使用 git push
也会删除本地远程跟踪分支 origin/X
所以它不需要消除过时的远程跟踪分支与 git fetch --prune
或 git fetch -p
如果你做得很不赖,但是也不会死
你可以验证远程跟踪分支 origin/X
也被删除,通过运行以下命令:
# View just remote-tracking branches
git branch --remotes
git branch -r
# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a
清理过时的本地远程跟踪分支origin/X
如果你没有删除你远程分支 X
在命令行中( 如以上所示),则你的本地Repo仍将包含远程跟踪分支( 已经过时) origin/X
. 有可能出现这种情况,如果删除了直接通过GitHub远程分支Web接口为例。
典型地删除这些过时的远程跟踪分支( git版本1 .6.6 之后) 是简单地运行 git fetch
与 --prune
或更短 -p
. Note,这样将会删除所有过时的本地远程跟踪分支的所有远程分支以上不再存在的远程 :
git fetch origin --prune
git fetch origin -p # Shorter
了,以下是相关引述 1 .6 .6发行说明 ( 我的重点) :
" git fetch " 学习了--all
和 --multiple
要运行选项,获取来自多个存储库和 --prune
选择要删除的远程跟踪分支就过时了 这些让" git remote update " 和" git remote prune " 远程更新" 或者" 删除" remote prune ",虽然不太必要( 没有计划) 。
除了上述的自动剪除过时的远程跟踪分支
或者,将过时的远程跟踪分支到本地而不是修剪 git fetch -p
,可以避免进行额外的网络操作。只要手动移除分支 和 --remote
或 -r
标志:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
请参见