题
我想要删除的一个分支在当地和远程。
失败的尝试,以删除远程支
$ 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个不同的分支机构的参与:
- 本地分支
X
. - 远程原产地的分支
X
. - 这地方远程跟踪分支
origin/X
这一轨道的远程支X
.
原有的海报用的
git branch -rd origin/bugfix
其中只有删除他 当地的远程跟踪分支 origin/bugfix
, 和不实际的远程支 bugfix
上 origin
.
删除这一实际远程支, 你需要
git push origin --delete bugfix
额外的细节
以下各节介绍额外的详细信息时要考虑删除远程和远程跟踪分支机构。
推删除远程分支机构也删除远程跟踪分支
请注意,删除远程支 X
从命令行使用 git push
还将删除本地的远程跟踪分支 origin/X
, ,因此它不需要修剪过时的远程跟踪的分支 git fetch --prune
或 git 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
将有效地使远程仓库看起来像库的本地副本(本地头,遥控器和标签被镜像到远程)。
自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
我发现我也使用publish
和track
经常命令
<强>一个衬里强>命令删除本地和远程:
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>
删除本地分支的步骤:
- 结帐的,另一个分支
- 删除本地分支
简单的说:
git branch -d <branch-name>
git push origin :<branch-name>
git push origin --delete <branch Name>
更容易记住比
git push origin :branchName
现在你可以做到这一点的 但桌面 应用程序。
在启动程序
要删除局部 - (普通),强>
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