git - 如何在本地和远程删除 Git 分支?

原文 标签 git version-control git-branch git-push git-remote

我想在本地和远程删除一个分支。
尝试删除远程分支失败

$ 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 option 是 --delete 的别名,如果它已经在其上游分支中完全 merge ,则仅删除该分支。
  • -D option 是 --delete --force 的别名,这将删除“不管其 merge 状态如何”的分支。 [来源:man git-branch ]
  • 如果您尝试删除当前选定的分支,您将收到错误消息。

  • 删除远程分支
    截至 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 的第 3 章斯科特·查康:

    Deleting Remote Branches

    Suppose you’re done with a remote branch — say, you and your collaborators are finished with a feature and have merged it into your remote’s main branch (or whatever branch your stable code-line is in). You can delete a remote branch using the rather obtuse syntax git push [remotename] :[branch]. If you want to delete your server-fix branch from the server, you run the following:

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

    Boom. No more branches on your server. You may want to dog-ear this page, because you’ll need that command, and you’ll likely forget the syntax. A way to remember this command is by recalling the git push [remotename] [localbranch]:[remotebranch] syntax that we went over a bit earlier. If you leave off the [localbranch] portion, then you’re basically saying, “Take nothing on my side and make it be [remotebranch].”


    我发git push origin: bugfix它工作得很好。 Scott Chacon 是对的——我想要 dog ear那个页面(或者通过在 StackOverflow 上回答这个问题实际上是狗耳朵)。
    那么你应该在其他机器上执行这个
    # Fetch changes from all remotes and locally delete 
    # remote deleted branches/tags etc
    # --prune will do the job :-;
    git fetch --all --prune
    
    传播变化。

    关于git - 如何在本地和远程删除 Git 分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37435884/

    相关文章:

    version-control - 如何删除hg中的一个分支?

    git - 我如何找出远程机器上 checkout 的分支?

    git - 如何忽略 Git merge 中的文件?

    git - 我什么时候应该使用 git pull --rebase?

    svn - 基石 SVN 错误 - 无法提交文件

    iphone - 在Xcode数据模型上进行任何更改后,我都会继续获取 “save operation failure”

    git - 查找包含多个特定提交的 Git 提交

    git fetch 具有指定前缀的分支

    git - 我应该如何解决我的 pull 请求中的 Google 贡献者许可协议(protocol)问题?

    git - .config/git/ignore' : Permission denied