如何同时删除 Git 本地和远程分支?


#1

我从 Github 上 fork 出的一个项目,该怎么一起删除本地和远程分支?

尝试如下方式删除不行:

$ git branch -d remotes/origin/bugfix
error: branch 'remotes/origin/bugfix' not found.

$ git branch -d origin/bugfix
error: branch 'origin/bugfix' not found.

$ git branch -rd origin/bugfix
Deleted remote branch origin/bugfix (was 2a14ef7).

$ git push
Everything up-to-date

$ git pull
From github.com:gituser/gitproject
* [new branch] bugfix -> origin/bugfix
Already up-to-date.

怎么才能把本地分支和 Github 上的远程分支都删除?


#2

TL;DR

$ git push origin --delete <branch_name>
$ git branch -d <branch_name>

如果还有没 merge 的改动并且你确定已经没什么用了可以删除:

$ git branch -D <branch_name>

详细说明

删除本地分支

删除本地分支使用如下命令:

$ git branch -d branch_name

-d 参数是 --delete 参数的简便写法,意思是仅仅删除已经 merge 到对应远端分支的本地分支。你也可以使用 -D 参数,即 --delete --force 的简便写法,它将直接删除本地分支,不论它是否已经 merge。[来源:man git-branch]

删除远端分支

从 Git v1.7.0 开始,你可以使用下面的命令删除远端分支:

$ git push origin --delete <branch_name>

以上命令可能比如下 Git v1.5.0 的删除远端分支或 tag 的语法要好记一些。

$ git push origin :<branch_name>

综上,使用以上哪种语法取决于你安装的 Git 的版本。