简短的答案
如果您想要对以下命令进行更详细的解释,请在下一节中看到长的答案。
正在删除远程分支
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. 本地远程跟踪分支/X 跟踪远程分支 X.
调
最初使用的海报是:
git branch -rd origin/bugfix
只删除了他的本地远程跟踪分支来源/ bugfix, 而不是源代码上的实际远程分支错误。
调
要删除实际的远程分支, 您需要
git push origin --delete bugfix
调
补充详情
以下各节介绍在删除远程和远程跟踪分支时需要考虑的其他细节。
推动删除远程分支还删除远程跟踪分支
请注意,使用 git 推键从命令行删除远程分支 X 将会删除本地远程跟踪分支源/ X, 所以没有必要用 git 抓取 -- prune 或 git 抓取 - p 来微调过时的远程跟踪分支。 但是, 如果您还是这么做的话, 它不会有什么影响 。
您可以通过运行以下操作来验证远程跟踪分支源/ 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
保护过时的当地远程跟踪分分机/X
如果您没有从命令行删除您的远程分支 X (如上) , 那么您的本地仓库将仍然包含( 现在已经过时的) 远程跟踪分支源/ X 。 如果您直接通过 GitHub 的网络界面删除远程分支, 这可能发生 。
清除这些过时的远程跟踪分支(自 Git 1.6.6 版本以来)的典型方法就是简单地用 -- purune 或更短的 p 运行 Git 获取。 请注意, 这对于在远程不再存在的任何远程分支, 都会移除所有过期的本地远程跟踪分支 :
git fetch origin --prune
git fetch origin -p # Shorter
1.6.6号释放说明(强调地雷)的相关引文如下:
“ 提供获取” 所学的 -- 全部和 -- 多个选项, 运行从许多仓库获取, 以及 -- prune 选项, 移除过期的远程跟踪分支。 这些选项使得“ 提供远程更新” 和“ 提供远程纯度” 变得不那么必要( 虽然没有计划删除“ 远程更新” 或“ 远程更新 ” ) 。
取代对过时的远程跟踪分支自动修剪的替代品
或者,与其通过 Git 抓取 -p 来修补过时的本地远程跟踪分支,不如通过手动删除带有 -- remotes 或 - r 旗的分支,避免进行额外的网络操作:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
另见
git-branch(1) 手册页. git-fetch(1) 手册页,Pro Git §3.5 Git 支部-远程支部。