我想要删除的一个分支在当地和远程。

失败的尝试,以删除远程支

$ 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 --delete <remote_name> <branch_name>
$ git branch -d <branch_name>

请注意,在大多数情况下,远程名称是origin

删除本地分支

要删除的本地分支使用下列之一:

$ git branch -d branch_name
$ git branch -D branch_name

注意:-d选项是--delete一个别名,其中仅删除该分支,如果它已经被完全在其上游分支合并。你也可以使用-D,这是--delete --force的别名,这将删除分支“不论其合并状态。” [来源:man git-branch]

删除远程分支[更新于8月-2017]

作为 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的版本将决定是否需要使用更容易还是更难语法。

删除远程分支[原件回答从5-JAN-2010]

Pro的GIT中 <第3章/ A>由Scott Chacon的:

  

删除远程分支

     

假设你正在使用一个远程分支了 - 比如说,你和你的合作者搞定了某个特性,并把它合并进了远程的master分支(或任何分支机构的稳定的代码行中)。你可以用这个非常无厘头的语法git push [remotename] :[branch]删除远程分支。如果你想在服务器上删除您的服务器修复分支,运行以下内容:

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

动臂。您的服务器上没有更多的分支。您可能要留心这一页,因为你一定会用到那个命令,你很可能会忘掉它的语法。要记住这条命令的方法是通过回顾,我们过了一个有点早了git push [remotename] [localbranch]:[remotebranch]语法。如果你省略了[localbranch]部分,那么你基本上是说,“就拿在我身边没有,使其可以[remotebranch]。”

我发出git push origin :bugfix和它美丽的工作。斯科特·查孔是正确的,我会想狗耳该页面(或实际上的狗耳朵用对堆栈溢出回答这个)。

然后,你应该在其他机器上执行该

git fetch --all --prune

要传播的变化。

其他提示

马修的回答去除的远程的分支是伟大的,我也很欣赏的解释,但使两个命令间的简单的区分:

要删除 本地分支从您的机器:

git branch -d {the_local_branch}(使用-D代替强制删除分支,而不检查合并状态)

要删除的 远程分支 从服务器:

git push origin --delete {the_remote_branch}

参考: https://makandracards.com/ makandra / 621-GIT-删除-A-分支和本地或远程

短的回答

如果你想更详细的解释以下命令,然后看到的长答复在下一部分。

删除一个远程支:

git push origin --delete <branch>  # Git version 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 tracking branches
git fetch <remote> -p      # Shorter

长回答:有3个不同的分支机构要删除!

当你处理删除分支机构在当地和远程保持记住, 有3个不同的分支机构的参与:

  1. 本地分支 X.
  2. 远程原产地的分支 X.
  3. 这地方远程跟踪分支 origin/X 这一轨道的远程支 X.

Visualization of 3 branches

原有的海报用的

git branch -rd origin/bugfix

其中只有删除他 当地的远程跟踪分支 origin/bugfix, 和不实际的远程支 bugfixorigin.

Diagram 2

删除这一实际远程支, 你需要

git push origin --delete bugfix

Diagram 3

额外的细节

以下各节介绍额外的详细信息时要考虑删除远程和远程跟踪分支机构。

推删除远程分支机构也删除远程跟踪分支

请注意,删除远程支 X 从命令行使用 git 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.这可能发生如果你删除了一个远程支直接通过审查的网界面,例如。

一个典型的方式来删除这些过时的远程跟踪分支(由于Git版1.6.6)是简单地运行 git fetch--prune 或者更短 -p. 注意,本中删除所有过时的地方远程跟踪分支机构的任何遥控分支机构,不再存在于遥远:

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

这里是相关的报价 1.6.6释放笔记 (重点煤矿):

"混帐取"了解到 --all--multiple选项,来运行提取 许多存储库, --prune 选择删除远程跟踪 分支机构,又过时。 这使"混帐遥更新"和"混帐 远程修剪"不必要的(没有计划删除"远 更新"也不是"远程修剪",though).

替代上述自动修剪过时的远程跟踪分支

或者,而不是修剪你的过时的地方远程跟踪分支机构通过 git fetch -p, 你可以避免额外的网络的操作 只是手动删除该分支(es)与 --remote-r 标志:

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

也参看

用于删除分支步骤:

有关删除的远程分支:

git push origin --delete <your_branch> 

有关删除本地分支上,您有三种方法

1: git branch -D <branch_name> 

2: git branch --delete --force <branch_name>  //same as -D

3: git branch --delete  <branch_name>         //error on unmerge

说明:确定,只是解释一下是怎么回事

根本就git push origin --delete删除您的远程分支ONLY ,在结尾处添加分支的名称,这将删除和就在同一时间推到远程。 ..

此外,git branch -D,它只是删除本地分行的只有!......

-D代表--delete --force这将删除即使它不是合并的分支(强制删除),但你也可以使用-d它代表--delete其抛出各自的分支合并状态的错误...

我还创建下面的图片显示步骤进行:

您还可以使用以下方法来删除远程分支

git push --delete origin serverfix

哪些做同样的事情如

git push origin :serverfix

,但它可能更容易记住。

提示:当您使用删除分支

git branch -d <branchname> # deletes local branch

git push origin :<branchname> # deletes remote branch

仅引用被删除。即使分支实际上遥控器上删除对它的引用仍然存在于你的团队成员的本地存储库。这意味着团队中其他成员的删除分支仍然可见,当他们做了git branch -a

要解决这个问题您的团队成员可以用

修剪树枝删除
git remote prune <repository>

这通常是git remote prune origin

如果您要删除一个分支,第一收银台以外的分支被删除。分支

git checkout other_than_branch_to_be_deleted

删除本地分支:

git branch -D branch_to_be_deleted

删除远程分支:

git push origin --delete branch_to_be_deleted
git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>

这是简单的:只要运行下面的命令:

要在本地和远程删除一个GIT中分支,首先使用命令删除本地分支:

git branch -d example

(这里example是分支名)

和之后删除远程使用命令分支:

git push origin :example

另一种方法是: -

git push --prune origin

警告: 这将删除本地不存在的所有远程分支的或者更全面,

git push --mirror

将有效地使远程仓库看起来像库的本地副本(本地头,遥控器和标签被镜像到远程)。

我用在我击设置:

alias git-shoot="git push origin --delete"

然后,可以调用:

git-shoot branchname

自2013年1月,GitHub的在你的“分行”页面包含一个<大骨节病>删除分支旁边的每个分支按钮。

相关博客文章:创建和删除分支

<强>本地删除:

要删除本地分支,你可以使用:

git branch -d <branch_name> 

要强制删除一个分支,使用-D代替-d的。

git branch -D <branch_name>

<强>远程删除:

有两个选项:

git push origin :branchname  

git push origin --delete branchname 

我会建议你使用第二个方法,因为它是更直观的。

如果你想既完成这些步骤用一条命令,您可以通过添加以下到您~/.gitconfig做一个别名:

[alias]
    rmbranch = "!f(){ git branch -d ${1} && git push origin --delete ${1}; };f"

另外,你可以使用命令行添加到您的全局配置

git config --global alias.rmbranch \
'!f(){ git branch -d ${1} && git push origin --delete ${1}; };f'

注意:如果使用-d(小写d),分支将只如果它已经被合并删除。要强制删除的情况发生,你将需要使用-D(大写d)。

删除分支机构在当地和远程

  • 结账时主分支 git checkout master

  • 删除远程支 git push origin --delete <branch-name>

  • 删除本地分支 git branch --delete <branch-name>

您也可以做到这一点使用git remote prune origin

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

有梅干和从git branch -r列表删除远程跟踪的分支。

在除了其他的答案,所以经常使用 git_remote_branch 工具。这是一个额外的安装,但它可以让你方便的方式与远程分支机构进行互动。在这种情况下,要删除:

grb delete branch

我发现我也使用publishtrack经常命令

<强>一个衬里命令删除本地和远程

D=branch-name; git branch -D $D; git push origin :$D

或添加别名下方到您的〜/的.gitconfig ;用法:git kill branch-name

[alias]
    kill = "!f(){ git branch -D \"$1\";  git push origin --delete \"$1\"; };f"

删除分行

  

让我们假设分支“接触型”我们的工作已经完成,我们已经将它纳入“大师”。因为我们不需要它了,我们可以将其删除(本地):

$ git branch -d contact-form

和用于删除所述远程分支:

git push origin --delete contact-form

删除远程支

git push origin :<branchname>

删除本地分支

git branch -D <branchname>

删除本地分支的步骤:

  1. 结帐的,另一个分支
  2. 删除本地分支

简单的说:

git branch -d <branch-name>
git push origin :<branch-name>
git push origin --delete <branch Name>

更容易记住比

git push origin :branchName

现在你可以做到这一点的 但桌面 应用程序。

在启动程序

  1. 点击该项目包含分支
  2. 开关的分支,你想删除 switching branch
  3. 从"分支"菜单选择",取消发布...",有的支删除审查服务器。 unpublish branch
  4. 从"分支"菜单选择,删除"branch_name"...',具有分被删除掉你的当地机(又名的计算机目前的工作) delete local branch

要删除局部 - (普通),

git branch -d my_branch

如果在垫底/合并进展和你的分公司没有做好意味着,你会得到一个错误Rebase/Merge in progress所以在这种情况下,您将无法删除你的分支。

因此,无论您需要解决垫底/合并,否则,你可以做力通过删除,

git branch -D my_branch

要删除在远程:

git push --delete origin my_branch

<强>可以做同样的使用,

git push origin :my_branch   # easy to remember both will do the same.

<强>图形表示,

这会不会,如果你有相同的名称作为遥控器上的分支标签工作:

$ git push origin :branch-or-tag-name
error: dst refspec branch-or-tag-name matches more than one.
error: failed to push some refs to 'git@github.com:SomeName/some-repo.git'

在这种情况下,你需要指定要删除的分支,而不是标签:

git push origin :refs/heads/branch-or-tag-name

同样,删除标签,而不是你会使用分支:

git push origin :refs/tags/branch-or-tag-name

很多其他的答案会导致错误/警告。这种方法比较傻瓜证明,不过,你可能仍然需要git branch -D branch_to_delete如果它不完全合并到some_other_branch,例如。

git checkout some_other_branch
git push origin :branch_to_delete
git branch -d branch_to_delete

如果你删除的远程分支不需要远程修剪。它只是用来获得最长达您跟踪一个仓库可用日期遥控器。我观察到git fetch将增加遥控器,而不是将其删除。下面是当git remote prune origin会做一些实际的例子:

用户A不执行上述步骤。用户B将运行下面的命令看到最最新远程分支机构

git fetch
git remote prune origin
git branch -r

我生病了google搜索这个答案的,所以我采取了类似的方法 到答案在于crizCraig张贴更早。

增加了以下到我的个人资料击:

function gitdelete(){
    git push origin --delete $1
    git branch -D $1
}

然后每我正在与一个分支完成时间(合并成master,例如)我运行在我的终端执行以下操作:

gitdelete my-branch-name

...然后从my-branch-name作为以及本地删除origin

执行之前

git branch --delete <branch>

请确保您首先确定哪些远程分支的确切名称是通过执行:

git ls-remote

这会告诉你什么准确输入<branch>值。 (branch区分大小写!)

git push origin :bugfix  # Deletes remote branch
git branch -d bugfix     # Must delete local branch manually

如果您确定要删除它,运行

git branch -D bugfix

现在来清理删除远程分支机构运行

git remote prune origin

所有其他的答案的混搭。需要Ruby 1.9.3+,测试的 OS X上。

调用这个文件git-remove,使其可执行文件,并把它放在你的路径。然后用,例如,git remove temp

#!/usr/bin/env ruby
require 'io/console'

if __FILE__ == $0
      branch_name = ARGV[0] if (ARGV[0])
      print "Press Y to force delete local and remote branch #{branch_name}..."
    response = STDIN.getch
    if ['Y', 'y', 'yes'].include?(response)
      puts "\nContinuing."
      `git branch -D #{branch_name}`
      `git branch -D -r origin/#{branch_name}`
      `git push origin --delete #{branch_name}` 
    else
      puts "\nQuitting."
    end
end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top