在简短的回答
如果要对以下命令进行更详细的说明,请参阅下一节的详细答案。
删除远程分支
git push origin --delete <branch> # Git version 1.7.0 or newer
git push origin -d <branch> # Shorter version (Git 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 remote-tracking branches
git fetch <remote> -p # Shorter
该长的答案:有三种不同的分支删除!
在处理本地和远程删除分支时,请记住涉及三个不同的分支:
- 当地分公司
X
。
- 远程起源分支
X
。
- 跟踪
origin/X
远程分支的本地远程跟踪分支X
。
使用的原始海报:
git branch -rd origin/bugfix
其中仅删除了本地远程跟踪分支 origin/bugfix
,而不是实际的远程分支bugfix
上origin
。
要删除该实际的远程分支,您需要
git push origin --delete bugfix
额外细节
以下各节描述了删除远程和远程跟踪分支时要考虑的其他详细信息。
推动删除远程分支也将删除远程跟踪分支
请注意,X
使用a从命令行删除远程分支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
从命令行中删除远程分支(如上),那么本地存储库仍将包含(现在已过时)远程跟踪分支origin/X
。例如,如果您直接通过GitHub的Web界面删除了远程分支,则会发生这种情况。
删除这些过时的远程跟踪分支的一种典型方法(自Git版本1.6.6起)是简单地git fetch
使用the --prune
或short来运行-p
。请注意,这将删除远程上不再存在的任何远程分支的所有过时的本地远程跟踪分支:
git fetch origin --prune
git fetch origin -p # Shorter
以下是1.6.6发行说明中的相关报价(重点是我的):
学习了“ git fetch” --all
和--multiple
选项,可以从许多存储库中运行取回操作,还--prune
可以选择删除过时的远程跟踪分支。 这些使“ git remote update”和“ git remote prune”的必要性降低(尽管没有计划删除“ remote update”或“ remote prune”)。
以上自动修剪的替代方法,用于过时的远程跟踪分支
另外,除了通过修剪修剪过时的本地远程跟踪分支外git fetch -p
,您还可以通过仅通过使用--remote
或-r
标志手动删除分支来避免进行额外的网络操作:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
也可以看看