Cannot delete a remote branch created unintentionally

喜夏-厌秋 提交于 2019-12-29 19:23:37

问题


$ git branch -a
* SocialAct
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/SocialAct
  remotes/origin/social

I want to delete the remote branch "remotes/origin/social", and applied folloing command:

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

But I have no idea how to bring these changes remotely so that the branches are deleted from origin and everyone can see the changes. I tried git push but that does not work

Any help.


回答1:


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.




回答2:


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




回答3:


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.




回答4:


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.




回答5:


Deleting remote branches is described in detail over here.



来源:https://stackoverflow.com/questions/2895906/cannot-delete-a-remote-branch-created-unintentionally

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!