一尘不染

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

git

我想在本地和远程删除一个分支。

尝试删除远程分支失败

$ 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.

我应该怎么做才能remotes/origin/bugfix在本地和远程成功删除分支?


阅读 387

收藏
2021-12-29

共1个答案

一尘不染

执行摘要

$ git push -d <remote_name> <branchname>
$ git branch -d <branchname>

注意:在大多数情况下,<remote_name>将是origin.

删除本地分支

要删除本地分支,请使用以下方法之一:

$ git branch -d <branch_name>
$ git branch -D <branch_name>
  • -d选项是 的别名--delete,它仅在分支已完全合并到其上游分支时才删除该分支。
  • -D选项是 的别名--delete --force,它删除“不管其合并状态如何”的分支。[来源:man git-branch]
  • 如果您尝试删除当前选定的分支,您将收到错误消息。

删除远程分支

Git v1.7.0 开始,您可以使用删除远程分支

$ git push <remote_name> --delete <branch_name>

这可能比

$ git push <remote_name> :<branch_name>

这是在Git v1.5.0中添加的“删除远程分支或标签”。

与开始的Git V2.8.0,您还可以使用git push-d选项为的别名--delete。因此,您安装的 Git 版本将决定您是否需要使用更简单或更难的语法。

删除远程分支 [2010 年 1 月 5 日的原始答案]

来自Scott Chacon的Pro Git第 3 章:

删除远程分支

假设你已经完成了一个远程分支——比如说,你和你的合作者完成了一个特性并将它合并到你远程的主分支(或者你的稳定代码行所在的任何分支)。您可以使用相当笨拙的语法删除远程分支git push [remotename] :[branch]。如果要从服务器中删除 server-fix 分支,请运行以下命令:

$ git push origin :serverfix
To git@github.com:schacon/simplegit.git
 - [deleted]         serverfix

繁荣。您的服务器上不再有分支。您可能想仔细阅读此页面,因为您将需要该命令,而且您可能会忘记语法。记住这个命令的一种方法是回忆git push [remotename] [localbranch]:[remotebranch]我们之前讨论过的语法。如果你不吃那[localbranch]部分,那么你基本上是在说,“不要站在我这边,让它成为[remotebranch]。”

我发布了git push origin: bugfix,它运行得很好。Scott Chacon 是对的——我想听听那个页面(或者通过在 Stack Overflow 上回答这个问题实际上听听)。

那么你应该在其他机器上执行这个

# Fetch changes from all remotes and locally delete 
# remote deleted branches/tags etc
# --prune will do the job :-;
git fetch --all --prune

传播变化。

2021-12-29