# git - 删除远程分支

# 遇到的问题

新版版本稳定上线后,之前的开发分支都需要删掉,清理掉无用的分支。在 git 仓储的页面上删除了分支,本地还是可以通过git branch -a 看到之前的远程分支。

git branch -a

* develop
  ie_resizable
  test_optimize
  remotes/origin/#2313 // 已经删掉了
  remotes/origin/HEAD -> origin/develop
1
2
3
4
5
6
7

# 解决办法

  1. 从本地用命令行操作

    先删除本地分支

    git branch -D #2313
    
    1

    然后可以有两种方式,删除远程分支:

    • a.在Git v1.7.0 之后,可以使用这种语法删除远程分支:
    git push origin --delete #2313 // <branchName>
    
    To https://github.com/rem486.git
     - [deleted]           #2313
    
    1
    2
    3
    4
    • b.推送一个空的分支到远程分支,实现删除远程分支:
    git push origin :#2313 
    
    1
  2. 从 网页端/其他人 删除了远程分支更新到本地

    先删除本地分支,查看分支状态

    git branch -D #2313
    git remote show origin
    
    * remote origin
      Fetch URL: https://github.com/rem486.git
      Push  URL: https://github/rem486.git
      HEAD branch: develop
      Remote branches:
        develop                                                        tracked
        master                                                         tracked
        refs/remotes/origin/#2313                                      stale (use 'git remote prune' to remove)
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    可以看到 stale 说明已经被删除了,需要将其从本地仓库的记录中删除

    • a.
    git remote prune origin
    Pruning origin
    URL: https://github.com/rem486.git
     * [pruned] origin/#2313
    
    1
    2
    3
    4
    • b.
    git remote update origin --prune
    Fetching origin
    From https://github.com/rem486.git
     - [deleted]           (none)     -> origin/#2313
     * [new branch]        #2717 -> origin/#2717
    
    1
    2
    3
    4
    5
    • c.在fetch之后删除掉没有与远程分支对应的本地分支:
    git fetch -p
    From https://github.com/rem486.git
     - [deleted]           (none)     -> origin/#2313
    
    1
    2
    3
    • d.其它
    git pull -p
    
    1
上次更新: 6/2/2020, 10:05:55 PM