Re: error: src refspec refs/heads/master matches more than one.
- From
David Kastrup <dak@gnu.org>
- Date
- Feb 14, 2014, 16:52 UTC
- Message-ID
- <87d2ip3ac9.fsf@fencepost.gnu.org>
- In-Reply-To
- <xmqqy51dirjs.fsf@gitster.dls.corp.google.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 24 quoted lines
> Duy Nguyen <pclouds@gmail.com> writes: > >> On Fri, Feb 14, 2014 at 7:45 PM, Andreas Schwab <schwab@linux-m68k.org> wrote: >>> Josef Wolf <jw@raven.inka.de> 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