21887
6105
我想在本地和远程删除分支。
尝试删除远程分支失败
$ git branch -d remotes / origin / bugfix
错误:找不到分支'remotes / origin / bugfix'。
$ git branch -d起源/错误修正
错误:找不到分支“来源/错误修正”。
$ git branch -rd起源/错误修正
删除了远程分支源/错误修正(是2a14ef7)。
$ git push
一切都是最新的
$ git pull
来自github.com:gituser/gitproject
* [新分支]错误修正->原点/错误修正
已经是最新的。
为了成功地在本地和远程删除remotes / origin / bugfix分支,我应该采取什么措施? 
1个
2
下一个
执行摘要
$ git push -d <远程名称> <分支名称>
$ git branch -d <分支名称>
请注意,在大多数情况下,远程名称是起源。
在这种情况下,您将必须像这样使用命令。
$ git push -d origin <分支名称>
删除本地分支
要删除本地分支,请使用以下方法之一:
$ git branch -d分支名称
$ git branch -D分支名称
注意:-d选项是--delete的别名,仅当分支已在其上游分支中完全合并时才删除该分支。您还可以使用-D,它是--delete --force的别名,它“无论分支的合并状态如何”都删除该分支。 [来源:man git-branch]
另请注意,如果您当前正在使用git branch -d branch_name将会失败
在您要删除的分支中。消息开头
错误:无法删除分支“ branch_name”。如果是这样,请先切换
到其他分支,例如:git checkout master。
删除远程分支[2017年9月8日更新]
从Git v1.7.0开始,您可以使用删除远程分支
$ git push <远程名称>-删除<分支名称>
可能比记住起来容易
$ git push <远程名称>:<分支名称>
在Git v1.5.0中添加了“删除远程分支或标签”。
从Git v2.8.0开始,您还可以使用带有-d选项的git push作为--delete的别名。
因此,您所安装的Git版本将决定您是否需要使用更简单或更难的语法。
删除远程分支[2010年1月5日的原始答案]
从Scott Chacon撰写的Pro Git的第3章中:
删除远程分支
假设您已经完成了远程分支的工作-例如,您和您的协作者都完成了一项功能,并将其合并到远程主分支(或稳定代码行所在的任何分支)中。您可以使用相当钝的语法git push [remotename]:[branch]删除远程分支。如果要从服务器删除服务器修订分支,请运行以下命令:
$ git push origin:serverfix
到git@github.com:schacon / simplegit.git
-[已删除] serverfix
繁荣。您的服务器上没有更多分支。您可能需要关注此页面,因为您将需要该命令,并且可能会忘记语法。记住此命令的一种方法是调用我们稍早讨论过的git push [remotename] [localbranch]:[remotebranch]语法。如果您忽略[localbranch]部分,则基本上是在说:“什么都不要站在我这一边,并使其成为[remotebranch]。”
我发布了git push origin:bugfix,它工作得很漂亮。斯科特·查孔(Scott Chacon)是对的,我想提一下该页面(或通过在StackOverflow上回答此问题实际上是提个醒)。
那你应该在其他机器上执行
#从所有远程获取更改并在本地删除
#远程删除的分支/标签等
#--prune将完成这项工作:-;
git fetch --all --prune
传播变化。
|
Matthew的回答对于删除远程分支非常有用,我也很欣赏其中的解释,但是要在两个命令之间进行简单区分:
要从计算机上删除本地分支:
git branch -d {th​​e_local_branch}(改用-D强制删除分支而不检查合并状态)
要从服务器删除远程分支:
git push origin --delete {the_remote_branch}
参考:Git:删除分支(本地或远程)
|
简短的答案
如果要对以下命令进行更详细的说明,请参阅下一节的详细答案。
删除远程分支
git push origin --delete #Git版本1.7.0或更高版本
git push origin -d <分支>#较短的版本(Git 1.7.0或更高版本)
git push origin:#低于1.7.0的Git版本
删除本地分支
git branch --delete <分支>
git branch -d <分支>#较短的版本
git branch -D <分支>#强制删除未合并的分支
删除本地远程跟踪分支
git branch --delete --remotes <远程> / <分支>
git branch -dr <远程> / <分支>#更短
git fetch  --prune#删除多个过时的远程跟踪分支
git fetch <远程> -p#更短
长答案:要删除三个不同的分支!
在处理本地和远程删除分支时,请记住涉及三个不同的分支:
本地分支X。
远程起源分支X。
跟踪远程分支X的本地远程跟踪分支原点/ X。
使用的原始海报:
git branch -rd起源/错误修正
它只删除了他的本地远程跟踪分支的origin / bugfix,而没有删除原始的实际远程分支的bugfix。
要删除该实际的远程分支,您需要
git push origin-删除错误修正
额外细节
以下各节描述了删除远程和远程跟踪分支时要考虑的其他详细信息。
推动删除远程分支也将删除远程跟踪分支
请注意,从命令行删除远程分支X使用git push也将删除本地远程跟踪分支的origin / X,因此不必使用git fetch --prune或git fetch -p修剪过时的远程跟踪分支。但是,无论如何都不会造成伤害。
您可以通过运行以下命令验证远程跟踪分支的origin / X是否也已删除:
#仅查看远程跟踪分支
git branch-远程
git分支-r
#严格查看本地和远程跟踪分支
git分支--all
git分支-a
修剪过时的本地远程跟踪分支origin / X
如果您没有从命令行中删除远程分支X(如上所述),那么本地存储库仍将包含(现在已过时)远程跟踪分支origin / X。例如,如果您直接通过GitHub的Web界面删除了远程分支,则会发生这种情况。
删除这些过时的远程跟踪分支的一种典型方法(自Git版本1.6.6起)是简单地使用--prune或更短的-p运行git fetch。请注意,这将删除远程上不再存在的任何远程分支的所有过时的本地远程跟踪分支:
git fetch origin --prune
git fetch origin -p#更短
以下是1.6.6发行说明中的​​相关报价(重点是我的):
“ git fetch”学习了--all和--multipleoptions,可以从
许多存储库,以及--prune选项可删除远程跟踪
过时的分支。这些使“ git remote update”和“ git
远程修剪”的必要性较低(没有计划删除“远程修剪”
更新”或“远程修剪”)。
以上自动修剪的替代方法,用于过时的远程跟踪分支
另外,除了通过git fetch -p修剪过时的本地远程跟踪分支外,您还可以通过仅使用--remote或-r标志手动删除分支来避免进行额外的网络操作:
git branch-删除--remote origin / X
git branch -dr origin / X#更短
也可以看看
git-branch(1)手册页。
git-fetch(1)手册页。
Pro Git§3.5 Git分支-远程分支。
|
删除分支的步骤:
要删除远程分支:
git push origin-删除
要删除本地分支,您可以通过三种方式:
1:git branch -D <分支名称>
2:git branch --delete --force <分支名称>#与-D相同
3:git branch --delete <分支名称>#取消合并错误
说明:好的,请解释一下这里发生了什么!
只需执行git push origin --delete只删除您的远程分支,在末尾添加分支的名称,这将删除并同时将其推送到remote ...
此外,git branch -D,仅删除本地分支!
-D代表--delete --force即使没有合并也会删除分支(强制删除),但是您也可以使用-d代表--delete代表分支合并状态抛出错误...
我还创建了下面的图像来显示步骤:
|
您还可以使用以下命令删除远程分支
git push-删除原始服务器修复
哪个与
git push origin:serverfix
但可能更容易记住。
|
提示:使用删除分支时
git branch -d <分支名称>#删除本地分支
要么
git push origin:<分支名称>#删除远程分支
仅引用被删除。即使该分支实际上是在远程上删除的,对该分支的引用仍然存在于团队成员的本地存储库中。这意味着对于其他团队成员,当他们执行git branch -a时,删除的分支仍然可见。
为了解决这个问题,您的团队成员可以使用以下方法修剪已删除的分支
git remote prune <存储库>
这通常是git remote prune的起源。
|
如果要删除分支,请首先检出要删除的分支以外的分支。
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 <分支名称>
git branch -D -r origin / <分支名称>
git push origin:<分支名称>
|
这很简单:只需运行以下命令:
要在本地和远程删除Git分支,请首先使用以下命令删除本地分支:
git branch -d示例
(这里的例子是分支名称。)
然后,使用以下命令删除远程分支:
git push origin:示例
|
很简单:
删除远程分支
git push -d origin <分支名称>
要么
git push origin:<分支名称>
强制删除本地分支
git branch -D <分支名称>
|
另一种方法是:
git push --prune起源
警告:这将删除本地不存在的所有远程分支。或更全面地说
git push-镜像
将有效地使远程存储库看起来像该存储库的本地副本(本地头,远程对象和标签在远程上被镜像)。
|
我在Bash设置中使用以下内容:
别名git-shoot =“ git push原点-删除“
然后,您可以致电:
git-shoot分支名称
|
本地删除:
要删除本地分支,可以使用:
git branch -d <分支名称>
要强制删除分支,请使用-D而不是-d。
git branch -D <分支名称>
远程删除:
有两种选择:
git push origin:分支名称
git push origin-删除分支名称
我建议您使用第二种方法,因为它更直观。
|
自2013年1月起,GitHub在“分支”页面中每个分支旁边都包含一个Delete分支按钮。
相关博客文章:创建和删除分支
|
如果要用一个命令完成这两个步骤,可以通过将以下内容添加到〜/ .gitconfig中来为其创建别名:
[别名]
rmbranch =“!f(){git branch -d $ {1} && git push origin-删除$ {1};}; f”
或者,您可以使用以下命令从命令行将其添加到全局配置中
git config --global alias.rmbranch \
'!f(){git branch -d $ {1} && git push origin-删除$ {1}; };F'
注意:如果使用-d(小写d),则仅在合并分支后才删除该分支。要强制执行删除操作,您将需要使用-D(大写D)。
|
在本地和远程删除分支
结帐到master分支-git checkout master
删除远程分支-git push origin --delete <分支名称>
删除您的本地分支-git branch --delete <分支名称>
|
您也可以使用git remote prune origin执行此操作
$ git remote prune origin
修剪起源
网址:git@example.com/yourrepo.git
* [修剪]起源/一些分支
它会修剪并从git branch -r列表中删除远程跟踪分支。
|
除了其他答案,我经常使用git_remote_branch工具。这是一个额外的安装,但是它为您提供了一种与远程分支进行交互的便捷方法。在这种情况下,要删除:
grb删除分支
我发现我也经常使用发布和跟踪命令。
|
删除本地和远程的单线命令:
D =分支名称; git branch -D $ D; git push来源:$ D
或将以下别名添加到您的〜/ .gitconfig中。用法:git kill分支名称
[别名]
kill =“!f(){git branch -D \” $ 1 \“; git push origin --delete \” $ 1 \“;}; f”
|
删除分支
假设我们在分支“联系表”上的工作已经完成,并且我们已经将其集成到“母版”中。由于我们不再需要它,因此可以将其删除(本地):
$ git branch -d联系人表格
对于删除远程分支:
git push origin-删除联系人表格
|
删除远程分支
git push origin:<分支名称>
删除本地分支
git branch -D <分支名称>
删除本地分支步骤:
结帐到另一个分支
删除本地分支
|
简单地说:
git branch -d <分支名称>
git push origin:<分支名称>
|
git push origin --delete <分支名称>
比起记忆更容易
git push origin:分支名称
|
现在,您可以使用GitHub Desktop应用程序执行此操作。
启动应用程序后
单击包含分支的项目
切换到您要删除的分支
从“分支”菜单中,选择“取消发布...”,以将分支从GitHub服务器中删除。
从“分支”菜单中,选择“删除“ branch_name” ...”,以从本地计算机(也就是您正在使用的计算机)上删除该分支。
|
本地删除-(正常)
git branch -d my_branch
如果您的分支处于重新基准化/合并进度中,并且未正确完成,这意味着您将收到错误消息,即正在重新进行基准/合并,因此在这种情况下,您将无法删除分支。
因此,您要么需要解决重新基准化/合并。否则,您可以通过以下方式强制删除:
git branch -D my_branch
要远程删除:
git push-删除起源my_branch
您可以使用以下方法执行相同操作:
git push origin:my_branch#容易记住,两者的作用相同。
图示:
|
如果您具有与远程分支的名称相同的标签,则此方法将无效:
$ git push origin:分支或标签名
错误:dst refspec分支或标记名称匹配多个。
错误:无法将一些引用推送到'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
|
其他许多答案将导致错误/警告。这种方法是相对简单的方法,例如,如果尚未完全合并到some_other_branch中,则可能仍需要git branch -D branch_to_delete。
git checkout some_other_branch
git push原点:branch_to_delete
git branch -d branch_to_delete
如果删除了远程分支,则不需要远程修剪。它仅用于在您正在跟踪的存储库上获取最新的远程服务器。我观察到git fetch会添加遥控器,而不是删除它们。这是git remote prune origin实际执行操作的示例:
用户A执行上述步骤。用户B将运行以下命令以查看最新的远程分支:
git获取
git remote prune起源
git分支-r
|
我讨厌用谷歌搜索这个答案,所以我对crizCraig早些时候发布的答案采取了类似的方法。
我在Bash个人资料中添加了以下内容:
函数gitdelete(){
git push origin-删除$ 1
git branch -D $ 1
}
然后,每次我完成一个分支(例如合并到master)后,我都会在终端中运行以下命令:
gitdelete我的分支名称
...然后从来源以及本地删除my-branch-name。
|
执行之前
git branch --delete <分支>
确保通过执行以下操作首先确定远程分支的确切名称是什么:
git ls-remote
这将告诉您确切输入值的内容。 (分支区分大小写!)
|
使用:
git push origin:bugfix#删除远程分支
git branch -d错误修正#必须手动删除本地分支
如果确定要删除它,请运行
git branch -D错误修正
现在要清理已删除的远程分支,请运行
git remote prune起源
|
1个
2
下一个
高度活跃的问题。赢得10个声誉才能回答这个问题。信誉要求有助于保护该问题免受垃圾邮件和非答复活动的侵害。
不是您要找的答案?浏览标记为git version-control git-branch git-push git-remote的其他问题,或询问您自己的问题。