简短的答案
如果您想对以下命令进行更详细的解释,请参阅下一节中的长答案。
删除远程分支
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
or修剪过时的远程跟踪分支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
使用--prune
或更短的-p
. 请注意,这会删除远程上不再存在的任何远程分支的所有过时的本地远程跟踪分支:
git fetch origin --prune
git fetch origin -p # Shorter
以下是1.6.6 发行说明中的相关引用(重点是我的):
“git fetch” 学习 --all
和--multiple
选项,从许多存储库运行 fetch,以及--prune
删除过时的远程跟踪分支的选项。 这些使“git remote update”和“git remote prune”变得不那么必要(虽然没有计划删除“remote update”或“remote prune”)。
对过时的远程跟踪分支进行上述自动修剪的替代方案
git fetch -p
或者,您可以通过手动删除带有or标志的分支来避免进行额外的网络操作,而不是通过 修剪过时的本地远程跟踪分支:--remote
-r
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
也可以看看