Le 18/11/2011 20:13, Till Theato a ?crit : > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > On 11/15/2011 10:34 PM, Simon Eugster wrote: >> 2011/11/15 Albert ARIBAUD<albert.aribaud at free.fr>: >>> Le 15/11/2011 22:13, Till Theato a ?crit : >>>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 >>>> >>>> Hi, I created a origin/master branch by accident and now I'm >>>> unable to delete it. The first try gave: $ git push >>>> kde:kdenlive.git :origin/master To git at git.kde.org:kdenlive.git >>>> - [deleted] origin/master >>>> >>>> The branch still exists but attempts to delete return: error: >>>> unable to push to unqualified destination: origin/master 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 at git.kde.org:kdenlive.git' >>>> >>>> Any ideas? > > Looks like there was a delay between the push and the pull part > (including http://quickgit.kde.org) > >>> >>> Are you sure the branch still exists at the remote server? I >>> think it actually only exist in your local copy of it. > > I did the following: > - - git push kde:kdenlive.git master:origin/master > -> 'origin/master' created on remote; does not exist locally > - - git push kde:kdenlive.git :origin/master > -> 'origin/master' deleted from remote > - - Then I checked quickgit.kde.org but 'origin/master' still existed > - - git push kde:kdenlive.git :origin/master > -> fails, tells that 'origin/master' does not exist > - - git pull kde:kdenlive.git > -> creates 'origin/master' locally > > => wtf?
I think you're mistaken about what the "origin/" prefix means. When you clone a repo, it is added to your local repo's remote with the nickname 'origin', and any local branch 'b' of this remote is copied locally to "origin/b" -- but they don't exist as "origin.b" on the remote, only as "b". Think of "origin/b" as a way to mean "branch called "b" on remote nicknamed "origin". So if you find in your repo a branch called "origin/master", then on the remote it is called "master", and if you want to push to it, you need to "git push <remote> <local-ref>:master', *not* '...:origin/master'. So what you did above was to create a branch called 'origin/master" on the remote, but to pull the remote's 'master', not its 'origin/master'. I am sure that on the remote, 'origin/master is really deleted. Amicalement, -- Albert.