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

在...创建的问题 Sat, Jun 15, 2019 12:00 AM

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

尝试删除远程分支失败

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

    
15386
  1. 主持人注意:如果您打算回答此问题,请注意已发布40个答案。您的新答案是否会增加任何重要价值?
    2014-06-11 16:10:42Z
  2. 注意:对于Git 2.5+(2015年第2季度),确切的消息将是“ deleted remote-tracking branch ”:参见 github.com/git/git/commit /...
    2015-05-25 14:57:35Z
  3. 好主,我只想知道OP最终得到了多少分?
    2019-06-13 19:19:53Z
  4. 醇>
    30答案                              30 跨度>                         

    执行摘要

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

    删除远程分支[2017年9月8日更新]

    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日的原始答案]

    来自 Pro Git 作者:Scott Chacon:

      

    删除远程分支

         

    假设您已完成远程分支 - 例如,您和您的协作者已完成某项功能并已将其合并到您的远程主分支(或您的稳定代码行所在的任何分支)。您可以使用相当钝的语法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并且效果很好。 Scott Chacon是对的 - 我想要狗耳朵那个页面(或者实际上是狗耳朵在Stack Overflow上回答这个问题。

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

     
    git fetch --all --prune
    

    传播变化。

        
    19267
    2018-12-13 04:45:54Z
    1. 如果你知道语法git push origin local_branch:remote_branch,那么用git push origin :remote_branch删除分支的语法就是cUTE。在:
      之前有一个空白
      2012-05-11 04:05:03Z
    2. 删除服务器上的远程分支后,别忘了在其他机器上执行git fetch --all --prune。 |||用git branch -d删除本地分支并用git push origin --delete删除远程分支后,其他机器可能仍然有“过时的跟踪分支”(看他们做git branch -a)。要摆脱这些做git fetch --all --prune
      2015-05-27 16:51:36Z
    3. 除了@ TrevorBoydSmith的git branch -a查看所有分支外,还可以使用git branch -r查看远程分支。另见git remote show origin - 来源: gitready.com/intermediate/2009/2月13日/列表远程branches.html
      2015-09-09 09:53:18Z
    4. 我必须运行git branch -D Branch_Name才能摆脱本地分支
      2016-03-10 01:32:06Z
    5. @ KolobCanyon如果分支尚未合并到另一个分支,则只需使用-D。
      2016-04-05 16:27:15Z
    6. 醇>

    Matthew的答案很适合删除远程分支,我也很欣赏这些解释,但要简单区分这两个命令:

    从您的计算机中删除 本地分支

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

    从服务器中删除 远程分支

    git push origin --delete {the_remote_branch}

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

        
    3040
    2017-12-18 12:33:13Z
    1. @ megido well -D force deletes,如果尚未合并,-d会发出警告。
      2014-11-06 19:04:59Z
    2. 如果您的本地分支未与master合并并运行'git branch -d your_branch,那么您将会出错,如error: The branch 'your_branch' is not fully merged. If you are sure you want to delete it, run 'git branch -D your_branch'.
      2015-10-31 12:59:14Z
    3. 我建议使用-d而不是-D,因为它更安全。如果-d由于未合并的提交而失败,那么你需要评估它,如果它绝对可以删除,那么使用-D。
      2016-02-02 03:47:57Z
    4. 其他具有已删除远程分支的存储库克隆的其他人应该运行git remote prune <name>(例如git remote prune origin),以便本地删除远程不再存在的陈旧分支。
      2016-04-18 23:07:39Z
    5. 我想补充一点,如果没有与当前HEAD合并,-d会发出警告。如果你需要清晰,我推荐这个命令git branch -a --merged origin/master它将列出本地和远程的任何分支;已合并为主人。 其他信息此处
      2017-02-10 13:10:57Z
    6. 醇>

    简短答案

    如果您想要更详细地解释以下命令,请参阅下一节中的长答案。

    删除远程分支:

     
    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个不同的分支要删除!

    当您处理删除b时本地和远程牧场,请记住涉及3个不同的分支

    1. 当地分行X
    2. 远程原点分支X
    3. 跟踪远程分支origin/X的本地远程跟踪分支X
    4. 醇>

      使用原始海报

       
      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
      

      修剪过时的本地远程跟踪分支origin /X

      如果您没有从命令行删除远程分支X(如上所述),那么您的本地仓库仍将包含(现在已过时)远程跟踪分支origin/X。例如,如果您通过GitHub的Web界面直接删除了远程分支,则会发生这种情况。

      删除这些过时的远程跟踪分支(从Git版本1.6.6开始)的典型方法是使用git fetch或更短的--prune运行-p请注意,这将删除远程不再存在的任何远程分支的所有过时的本地远程跟踪分支

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

      以下是 1.6.6发行说明(强调我的):

        

      “git fetch”了解 --all--multiple选项,运行从中获取   许多存储库, --prune选项删除远程跟踪   过时的分支。这些使得“git远程更新”和“git   远程修剪“不太必要(没有计划删除”遥控器   尽管如此,更新“也不是”远程修剪“。

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

      或者,不要通过git fetch -p 修剪过时的本地远程跟踪分支,而只需手动删除带有--remote-r标志的分支,即可避免进行额外的网络操作: /p>  

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

      另见

    1760
    2016-03-10 12:20:26Z
    1. 从你的插图中,我可以看到有本地克隆仓库和远程原始仓库。所以至少有两个物理分支。要删除的第三个分支在哪里?第三个分支只是指向本地克隆存储库中的提交的指针吗?
      2016-02-18 02:00:40Z
    2. @ huggie这是非常正确的。 Git中的分支只是附加到提交的书签。所以在上面的图表中,本地克隆中有Xorigin/X个书签(2个分支),然后远程有X个(3个分支)。
      2016-02-23 07:33:42Z
    3. 远程跟踪分支的
      + 1。当您克隆其他人的分支时,此分支是导致问题的原因。它会继续跟踪您的提交并询问您是否要推送到该人员的分支。
      2017-06-21 19:48:20Z
    4. 醇>

    删除分支的步骤:

    删除远程分支:

     
    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 仅删除您的远程分支,在末尾添加分支的名称,这将删除并同时将其推送到远程...

    另外,git branch -D,只删除本地分支 ONLY !...

    -D代表--delete --force即使它没有合并也会删除分支(强制删除),但你也可以使用-d代表--delete,它会抛出分支合并状态的错误......

    我还创建了下面的图片以显示步骤:

    中的远程和本地分支

        
    1321
    2019-03-22 07:08:35Z
    1. git branch -a将显示本地和远程分支。这将为您的图表介绍提供帮助。
      2017-07-27 03:01:39Z
    2. 请注意,如果您要设置要删除的分支,则需要在删除之前签出除删除之外的分支(例如:master)当地分公司。
      2018-05-28 08:43:55Z
    3. 当分支在原点上被删除时,您的本地存储库将不会注意到这一点。您仍将拥有这些分支的本地缓存版本(这实际上是好的)但git branch -a仍会将它们列为远程分支。您可以在本地清理该信息,如下所示:git remote prune origin此删除的分支的本地副本不会被删除。使用git fetch --prune
      可以获得相同的效果
      2019-05-08 06:33:45Z
    4. 醇>

    您还可以使用以下命令删除远程分支

     
    git push --delete origin serverfix
    

    相同  
    git push origin :serverfix
    

    但可能更容易记住。

        
    753
    2018-12-13 04:44:17Z
    1. ...更安全:O
      2017-11-29 07:31:21Z
    2. 您忘记了删除本地分支的部分,可以通过以下方式完成:git branch -d <local_branch>git branch -D <local_branch>强制删除
      2018-02-14 04:23:55Z
    3. 醇>

    提示:使用

    删除分支时  
    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

        
    360
    2018-12-13 04:44:30Z
    1. 您应该澄清上述git push操作删除了本地分支远程分支。
      2013-05-21 13:51:46Z
    2. 请注意,git remote prune是一种有点过时的删除过时远程跟踪分支的方法,更新的方法是使用git fetch --prunegit fetch -p
      2014-06-11 16:30:04Z
    3. @ RRMadhav,确实你删除它后不会看到删除的分支,因为对你的本地删除了对远程分支的引用。团队中已经签出该分支的其他人仍然会有这个参考,除非他们修剪分支,否则仍会看到它。
      2014-12-05 14:27:38Z
    4. 醇>

    如果要删除分支,请先检查除要删除的分支以外的分支。

     
    git checkout other_than_branch_to_be_deleted
    

    删除本地分支:

     
    git branch -D branch_to_be_deleted
    

    删除远程分支:

     
    git push origin --delete branch_to_be_deleted
    
        
    359
    2015-06-09 02:04:02Z
     
    git branch -D <name-of-branch>
    git branch -D -r origin/<name-of-branch>
    git push origin :<name-of-branch>
    
        
    259
    2014-08-08 20:04:03Z
    1. 请注意-D 强制删除。使用-d总是更好,这会提醒你是否需要做一些危险的事情。
      2015-01-10 01:08:57Z
    2. ahahah :)这取决于你:如果你想看到git哭,请使用-d,如果你想哭,请使用-D。
      2015-02-13 11:21:07Z
    3. 醇>

    这很简单:只需运行以下命令:

    要在本地和远程删除Git分支,请先使用以下命令删除本地分支:

     
    git branch -d example
    

    (此处example是分支名称)

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

     
    git push origin :example
    
        
    221
    2015-06-09 02:03:14Z

    另一种方法是: -

     
    git push --prune origin
    

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

     
    git push --mirror
    

    将有效地使远程存储库看起来像存储库的本地副本(本地磁头,远程控制器和标签在远程上镜像)。

        
    192
    2018-12-13 04:44:03Z
    1. git push --prune origin在gitlab上没有为我做任何事情:git clone git://repo.git; git branch -d -r origin /some-branches; git push --prune origin;产量:一切都是最新的; git fetch;将本地删除的分支带回来; git push --mirror;现在他们真的走了!
      2015-10-08 16:46:25Z
    2. 醇>

    我在 Bash 设置中使用以下内容:

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

    然后你可以打电话:

     
    git-shoot branchname
    
        
    163
    2018-12-13 04:43:53Z
    1. 我最后只是将别名“shoot”添加到我的.gitconfig shoot = push origin --delete
      2014-12-04 18:06:37Z
    2. 如果您的来源是Atlassian Stash并且分支被设置为默认值,您将收到错误“默认情况下,删除当前分支被拒绝...” 。在删除之前,我必须将Stash中的默认分支更改为指向另一个分支。
      2014-12-12 00:29:35Z
    3. 这很简单,因为你已经完成了,但是fyi git也可以让你自定义命令。将git push origin --delete $1放在名为git-shoot的路径上的文件中,git shoot branchname也可以使用。
      2015-10-14 07:09:31Z
    4. 醇>

    自2013年1月起,GitHub在“分支”页面的每个分支旁边都包含删除分支按钮。

    相关博文:创建和删除分支机构

        
    128
    2018-12-13 04:42:21Z
    1. 我今年才开始使用Github,所以我想知道为什么这是一个如此高度评价的问题,以及为什么没有一个顶级答案建议只删除它Github网页界面!有趣的是,这只是最近的一次补充。
      2013-09-11 12:18:54Z
    2. 我要指出这一点。请注意,该按钮不会删除您的本地分支...请参阅此答案以了解如何执行此操作: stackoverflow.com/a/10999165 /901641
      2013-10-29 14:02:45Z
    3. 醇>

    在本地删除:

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

     
    git branch -d <branch_name> 
    

    要强制删除分支,请使用-D而不是-d

     
    git branch -D <branch_name>
    

    远程删除:

    有两种选择:

     
    git push origin :branchname  
    
    git push origin --delete branchname 
    

    我建议您使用第二种方式,因为它更直观。

        
    123
    2018-12-13 04:45:05Z

    如果您想通过一个命令完成这两个步骤,可以通过将以下内容添加到~/.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)。

        
    121
    2014-06-11 16:26:17Z
    1. 这就是我要找的东西。我自己的shell函数别名不起作用(意外的EOF),我无法弄清楚为什么,但这很好用!我做的唯一改变是用&&替换;,这样即使第一个命令失败,第二个命令仍然会执行(有时只存在本地或只存在远程)。
      2014-12-16 08:55:29Z
    2. 醇>

    在本地和远程删除分支

    • 结帐至主分行 - git checkout master

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

    • 删除您当地的分行 - git branch --delete <branch-name>

    113
    2017-12-13 22:10:51Z

    您也可以使用git remote prune origin

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

    它从git branch -r列表中修剪和删除远程跟踪分支。

        
    108
    2018-12-13 04:43:19Z

    除了其他答案,我经常使用 git_remote_branch 工具。这是一个额外的安装,但它为您提供了一种与远程分支机构进行交互的便捷方式。在这种情况下,要删除:

     
    grb delete branch
    

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

        
    104
    2018-12-13 04:41:10Z

    单行命令删除本地和远程

    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"
    
        
    93
    2017-01-15 08:30:43Z
    1. ⚠️在脚本中仔细使用git branch -D,因为它强制删除分支而不检查它是否已合并。使用-d是安全的。
      2017-03-13 14:05:07Z
    2. 醇>

    删除分支机构

      

    让我们假设我们在分支“联系表单”上的工作已经完成,我们已经将它集成到“master”中。由于我们不再需要它,我们可以删除它(本地):

     
    $ git branch -d contact-form
    

    删除远程分支:

     
    git push origin --delete contact-form
    
        
    91
    2015-11-18 19:51:13Z

    删除远程分支

    git push origin :<branchname>

    删除本地分支

    git branch -D <branchname>

    删除本地分支步骤:

    1. 结帐到另一个分支
    2. 删除本地分支
    86
    2016-02-19 18:05:46Z
    1. 远程分支删除后是否需要“git push”?
      2016-02-17 08:32:54Z
    2. @ SamithaChathuranga no,git push origin :<branchname>已经将'empty`分支推送到遥控器(因此删除了远程分支)
      2017-06-09 22:20:55Z
    3. 醇>

    简单地说:

     
    git branch -d <branch-name>
    git push origin :<branch-name>
    
        
    85
    2016-06-25 12:52:01Z
    1. 如果它是你自己的分支,这是有效的。但是,如果你修剪回购中的所有不需要的分支(其中一些不是你的),那就不够了
      2016-06-30 22:23:07Z
    2. 醇>
     
    git push origin --delete <branch Name>
    

    更容易记住  
    git push origin :branchName
    
        
    80
    2018-12-13 04:44:45Z

    现在,您可以使用 GitHub桌面应用程序进行此操作。

    启动应用后

    1. 单击包含分支的项目
    2. 切换到您要删除的分支
    3. 从“分支”菜单中,选择t,“Unpublish ...”,从GitHub服务器中删除分支。
    4. 从“分支”菜单中选择“删除” branch_name “...”,将分支从本地计算机(也就是您当前正在处理的计算机)中删除
    79
    2016-12-16 03:58:50Z
    1. 我没有投票,但我的想法是它没有实质性的帮助。问题显然是要求更多的命令行类型答案,而不必使用外部程序,如果人们点击这里,他们可能不会寻找桌面方式的github。
      2015-11-06 11:51:15Z
    2. @ Daemedeor,我不同意。在OP提出问题的2010年,UI的实现方式并不存在,唯一的选择是命令行。为了表明您只想要一个命令行选项,应该在问题或标签中说明,命令行 - 界面,在这种情况下不存在。
      2015-11-06 16:00:39Z
    3. 用于删除远程分支的git命令很糟糕,我倾向于忘记它(新旧)。幸运的是有GUI工具可以选择。 Git Gui,TortoiseGit和GitHub Desktop都有它 - 我希望Git Extensions也有这个功能。无论如何,我记得当我需要删除一个远程分支时,从Git Extensions中启动Git Gui。
      2016-03-25 21:59:21Z
    4. 醇>

    要在本地删除 - (正常),

     
    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.
    

    图形表示,

        
    73
    2017-11-19 10:24:03Z

    如果您的标签与遥控器上的分支名称相同,则无效:

     
    $ 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
    
        
    65
    2018-12-13 04:43:05Z
    1. 这很好,但是人们真的不应该首先使用相同的名称和相同的命名方案命名他们的分支和标签。
      2014-07-29 10:00:02Z
    2. 好吧,我的情况是我正在将分支转换为标记,并且标记与分支具有相同的名称是有意义的。通过转换我的意思是将分支B合并到A并用分支B标记分支B中的最后一次提交,这样在删除分支B之后,通过简单地检出标记B,它仍然可以很容易地恢复。
      2014-07-30 11:59:10Z
    3. 醇>

    许多其他的回答rs会导致错误/警告。这种方法相对简单,但如果它没有完全合并到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
    
        
    51
    2018-12-13 04:41:37Z

    我厌倦了谷歌搜索这个答案,所以我采取了类似的方法 至早前 crizCraig发布的答案

    在我的Bash个人资料中添加了以下内容:

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

    然后每当我完成一个分支(例如合并到master)时,我在终端中运行以下命令:

     
    gitdelete my-branch-name
    

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

        
    49
    2017-05-23 12:34:58Z
    1. 在此扩展,--delete "$@"-D "$@"而不是$1将处理多个分支。
      2016-06-27 13:15:19Z
    2. 我建议首先运行git branch -d(小写'd')以确保已合并更改,然后成功推送(在命令之间输入&&
      2016-07-19 14:17:45Z
    3. 醇>

    执行前

     
    git branch --delete <branch>
    

    确保首先通过执行确定远程分支的确切名称:

     
    git ls-remote
    

    这将告诉您输入<branch>值的确切内容。 (branch区分大小写!)

        
    45
    2016-06-25 12:56:09Z
     
    git push origin :bugfix  # Deletes remote branch
    git branch -d bugfix     # Must delete local branch manually
    

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

     
    git branch -D bugfix
    

    现在清理已删除的远程分支运行

     
    git remote prune origin
    
        
    44
    2016-04-21 16:49:36Z

    所有其他答案的混搭。需要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
    
        
    43
    2018-12-13 04:42:35Z
    1. 一个字母得到这个答案的礼貌: stackoverflow.com/a/8047分之8072675
      2013-11-19 21:04:12Z
    2. @ chhh然后你需要扩展这个功能,使其成为变量而不是假设。
      2014-12-05 16:44:44Z
    3. 抱歉,为这种工作安装Ruby?更合乎逻辑的是bash上的实现,它将开箱即用。
      2015-05-21 19:37:04Z
    4. @ Reishin Ruby就像Bash一样安装在盒子上,至少在OSX上。请参阅: stackoverflow.com/questions/2342894/... ,其中该主题已作为基于意见的SO被丢弃。
      2015-05-21 20:03:07Z
    5. @ Yar此链接不在上下文范围内,范围更广。我只讲git,并且主题不仅仅源于OSX,选择对其他系统来说很奇怪(例如* UNIX,Windows)
      2015-05-21 20:33:30Z
    6. 醇>
来源放置 这里