Subject: Re: error: src refspec refs/heads/master matches more than one.

From: David Kastrup <[email-masked]>
Date: Fri, 14 Feb 2014 17:52:54 +0100

Junio C Hamano <[email-masked]> writes:

> Duy Nguyen <[email-masked]> writes:
>
>> On Fri, Feb 14, 2014 at 7:45 PM, Andreas Schwab <[email-masked]> wrote:
>>> Josef Wolf <[email-masked]> writes:
>>>
>>>> Notice the refs/heads _within_ refs/heads!
>>>>
>>>> Now I wonder how I managed to get into this situation and what's the best way
>>>> to recover?
>>>
>>> Probably you did something like "git branch refs/heads/master".  You can
>>> remove it again with "git branch -d refs/heads/master".
>>
>> As a porcelain, "git branch" should prevent (or at least warn) users
>> from creating such refs, I think.
>
> "warn", possibly, but I do not see a reason to *prevent*.
>
>  A. You are not allowed to call your branch with a string that begins with
>     'refs/heads/'.
>  B. Why?
>  A. Because it will confuse you.
>  B. I know what I am doing.
>  A. ???

A. But maybe Git will no longer know what you are doing.  Its standard
way of resolving references will mean that once a branch
refs/heads/wibble exists, referring to a branch wibble will become extra
hard.  For example, stuff like

push origin HEAD:refs/heads/wibble

will maybe create or update a new branch wibble, or maybe it will just
push to the existing branch refs/heads/wibble.

-- 
David Kastrup