删除远程分支的尝试失败 :

$ 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本地和远程分支?


当前回答

内容提要

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 v2.3 吉特 v2.3, git branch -d(删除)学会尊重-f(力)旗。
  • 如果您试图删除当前选中的分支, 您将会收到错误 。

删除远程分支

截至截至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日的答复]

第3章普罗吉特Scott Chacon写道:

正在删除远程分支

假设你已经用一个远程分支完成了,比如,你和你的合作者完成了一个功能,并将其合并到您的远程主要分支(或您稳定的代码线中的任何分支)。您可以用相当模糊的语法删除一个远程分支。git push [remotename] :[branch]。如果您想要从服务器中删除服务器上的服务器固定分支,您将运行以下操作:

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

boom 。 在您的服务器上不再有分支。 您可能想要在这个页面上粘住树枝 , 因为您需要这个命令, 您可能会忘记语法 。 记住这个命令的一个方法就是提醒git push [remotename] [localbranch]:[remotebranch]之前我们讨论过的语法 如果你离开[localbranch]你基本上在说,“不要拿我这边的任何东西,让它成为[remotebranch].”

印本印发 印发git push origin: bugfix斯科特·查孔是对的狗狗耳朵该页(或几乎是狗耳朵,在Stack overflow上回答这个)。

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

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

以传播变化。

其他回答

缩略短答案

如果您想要对以下命令进行更详细的解释,请在下一节中看到长的答案。

正在删除远程分支

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

缩略长答:要删除三个不同的分支!

当你处理删除本地和远程分支时 记住有三个不同的部门参与其中:

  1. 地方分支机构X.
  2. 边远来源分支X.
  3. 当地远程跟踪处origin/X跟踪远程分支X.

Visualization of three branches

最初使用的海报是:

git branch -rd origin/bugfix

只删除了他的当地远程跟踪分支 origin/bugfix,而不是实际的远程分支bugfix上 年 月origin.

Diagram 2

删除实际的远程分支,您需要

git push origin --delete bugfix

Diagram 3

补充详情

以下各节介绍在删除远程和远程跟踪分支时需要考虑的其他细节。

推动删除远程分支还删除远程跟踪分支

注意:删除远程分支X使用 agit push 还将删除当地的远程跟踪分支 origin/X因此,没有必要将过时的远程跟踪处用git fetch --prunegit 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

保护过时的当地远程跟踪分分机/X

如果您没有删除您的远程分支X从命令行(如上)发出命令行(如上),然后您的本地仓库将仍然包含(一个现已过时的)远程跟踪分支origin/X。如果您直接通过 GitHub 的网络界面删除远程分支,这种情况就会发生。

清除这些过时的远程跟踪分支(自Git 1.6.6版以来)的典型方法是简单地运行git fetch和和--prune短或短-p. 请注意,这清除了所有在偏远地区已不复存在的偏远分支的所有陈旧的当地远程跟踪分支。:

git fetch origin --prune
git fetch origin -p # Shorter

以下是以下相关引文:1.6.6 释放说明(强调地雷):

学习“ 即时抓取” 学习 --all--multiple 选项,以运行从许多仓库获取的信息,以及--prune选项,可删除过期的远程跟踪分支。更没有必要(虽然没有计划删除“远程更新”或“远程更新”)。

取代对过时的远程跟踪分支自动修剪的替代品

而不是通过git fetch -p, 您可以避免进行额外的网络操作,而仅手动删除与--remotes-r国旗 :

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

另见

答案是好的, 但是, 如果您有一大堆分支, 逐个删除本地和远程的分支, 将会是一个无聊的任务 。 您可以使用此脚本将这些任务自动化 。

branch_not_delete=( "master" "develop" "our-branch-1" "our-branch-2")

for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do

    # Delete prefix remotes/origin/ from branch name
    branch_name="$(awk '{gsub("remotes/origin/", "");print}' <<< $branch)"

    if ! [[ " ${branch_not_delete[*]} " == *" $branch_name "* ]]; then
        # Delete branch remotly and locally
        git push origin :$branch_name
    fi
done
  • 列出您不想删除的分支
  • 绕过遥控器的分支 如果它们不在我们的“保护名单”里 就会删除它们

资料来源:立即删除 Git 分支

删除分行

我们假设我们的分支“联系形式”的工作已经完成,我们已经将其纳入“主人”中。由于我们不再需要它,我们可以删除它(就地):

$ git branch -d contact-form

要删除远程分支 :

git push origin --delete contact-form

您也可以使用git remote prune origin

$ git remote prune origin
Pruning origin
URL: git@example.com/yourrepo.git
 * [pruned] origin/some-branchs

它利用和删除了远程跟踪分支和远程跟踪分支。git branch -r列表。

最初的几种方法对我行不通。

假设你有以下分支和远程分支,

Local : Test_Branch
Remote: remotes/origin/feature/Test_FE

正确设置上方为您本地分支以跟踪您想要删除的远程分支 。

git branch --set-upstream-to=remotes/origin/feature/Test_FE Test_Branch

然后删除远程分支执行此任务

git push origin --delete Test_Branch

然后删除本地分支,按照命令执行

git branch -D Test_Branch

就是这样。