Cannot delete a remote branch created unintentionally

前端 未结 5 643
陌清茗
陌清茗 2020-12-25 12:54
$ git branch -a
* SocialAct
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/SocialAct
  remotes/origin/social

I want to delete

相关标签:
5条回答
  • 2020-12-25 13:11

    Deleting remote branches is described in detail over here.

    0 讨论(0)
  • 2020-12-25 13:17

    The below command will delete the remote tracking branch but not the branch which exists on remote

    $ git branch -d -r origin/social
    Deleted remote branch origin/social (was 26f6f61).
    

    To delete remote branch:

    git push origin  :social
    

    This will automatically delete the remote tracking branch i.e remotes/origin/social.

    0 讨论(0)
  • 2020-12-25 13:26

    I had this error (from above):

    Thanks. Actually I noticed this solution and tried earlier. But this gives following error... $ git push origin :heads/socail Enter passphrase for key '/h/.ssh/id_rsa': error: unable to push to unqualified destination: heads/socail The destination refspec neither matches an existing ref on the remote nor begins with refs/, and we are unable to guess a prefix based on the source ref. error: failed to push some refs to 'git@xxxxxx.git' – Himel May 24 '10 at 9:37

    It seemed to have gotten confused about whether or not I had actually deleted it remotely. I worked around it like so:

    git push origin HEAD:branch_to_delete
    
    git push origin :branch_to_delete
    

    That worked for me. Using: git version 1.7.3.1.msysgit.0.

    0 讨论(0)
  • 2020-12-25 13:33

    git push origin :social
    But you need to delete locally as well, before or after.

    0 讨论(0)
  • 2020-12-25 13:33

    As mentioned by @Josh in a comment on Nathan McDaniel's Answer, this is likely due to the branch no longer existing in the remote repository. This causes git branch -a to still show the branch under origin (or whatever you happened to name this particular remote), but deleting the branch on the remote repository is impossible because it no longer exists on the remote. This could have been caused by deleting the branch on the remote from another computer (on top of the fact that git pull and git fetch do not remove references to remote branches that have been deleted from the remote repository).

    The fix

    Simply remove all remote-tracking branches that have already been removed from the remote repository with git remote prune:

    git remote prune REMOTENAME
    

    For example, if your remote's name is origin (likely), the above command would look like:

    git remote prune origin
    

    From the documentation provided with git:

    git remote prune [-n | --dry-run] <name>

    Deletes all stale remote-tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in "remotes/".

    With --dry-run option, report what branches will be pruned, but do not actually prune them.

    0 讨论(0)
提交回复
热议问题