# git init doesn't create master branch

8 messages from 2013-05-29 to 2013-05-29. Participants: Ákos, Tajti, Matthieu Moy, Ramkumar Ramachandra, Junio C Hamano.
Thread: https://gitlist.dev/t/33973

## Ákos, Tajti, 2013-05-29 12:47

Subject: git init doesn't create master branch
Message-ID: <51A5F8E0.8060906@intland.com>
URL: https://gitlist.dev/e/51A5F8E0.8060906%40intland.com

```
Dear List,

the manual of git init says: "An initial HEAD file that references the 
HEAD of the master branch is also created."

However, after creating the repository using git init there's no master 
branch. How can make sure that master is created?

Thanks in advance,
Ákos Tajti

```

## Matthieu Moy, 2013-05-29 12:50

Subject: Re: git init doesn't create master branch
Message-ID: <vpqk3migdb1.fsf@anie.imag.fr>
URL: https://gitlist.dev/e/vpqk3migdb1.fsf%40anie.imag.fr
In-Reply-To: <51A5F8E0.8060906@intland.com>

```
"Ákos, Tajti" <akos.tajti@intland.com> writes:

> Dear List,
>
> the manual of git init says: "An initial HEAD file that references the
> HEAD of the master branch is also created."
>
> However, after creating the repository using git init there's no
> master branch.

Right, but HEAD still points to it ;-). We sometimes call this an
"unborn branch".

> How can make sure that master is created?

It will be created when you do the first commit. If you insist in having
master created before you actually start working, you can run:

  git commit -m "Initial empty commit" --allow-empty

Right after "git init".

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

```

## Ramkumar Ramachandra, 2013-05-29 12:54

Subject: Re: git init doesn't create master branch
Message-ID: <CALkWK0m=m89QcnMNg9gEVeb7ZHSRd7ZMcL+y8gYuzn8YCTsSYw@mail.gmail.com>
URL: https://gitlist.dev/e/CALkWK0m%3Dm89QcnMNg9gEVeb7ZHSRd7ZMcL%2By8gYuzn8YCTsSYw%40mail.gmail.com
In-Reply-To: <vpqk3migdb1.fsf@anie.imag.fr>

```
Matthieu Moy wrote:
>> the manual of git init says: "An initial HEAD file that references the
>> HEAD of the master branch is also created."
>>
>> However, after creating the repository using git init there's no
>> master branch.
>
> Right, but HEAD still points to it ;-). We sometimes call this an
> "unborn branch".

Right.  Let me also add that our prompt has support for this; on an
unborn branch, my prompt looks like:

artagnon|master#:/tmp/foo$
               ^
	       the # indicates unborn branch

Please consider using contrib/completion/git-prompt.sh to make your life easier.

```

## Ákos, Tajti, 2013-05-29 13:01

Subject: Re: git init doesn't create master branch
Message-ID: <51A5FC17.8000608@intland.com>
URL: https://gitlist.dev/e/51A5FC17.8000608%40intland.com
In-Reply-To: <CALkWK0m=m89QcnMNg9gEVeb7ZHSRd7ZMcL+y8gYuzn8YCTsSYw@mail.gmail.com>

```
Thanks for clarifying this thing for me! I don't really insist on having 
a master branch it's just that I tried to pull from a repository bundle 
and I got this error message:

"Cannot merge multiple branches into empty head"

The command was:

git pull ../dump.dmp refs/heads/*:refs/heads/*

Is this a better way of doing this?

Thanks,
Ákos

2013.05.29. 14:54 keltezéssel, Ramkumar Ramachandra írta:
> Matthieu Moy wrote:
>>> the manual of git init says: "An initial HEAD file that references the
>>> HEAD of the master branch is also created."
>>>
>>> However, after creating the repository using git init there's no
>>> master branch.
>> Right, but HEAD still points to it ;-). We sometimes call this an
>> "unborn branch".
> Right.  Let me also add that our prompt has support for this; on an
> unborn branch, my prompt looks like:
>
> artagnon|master#:/tmp/foo$
>                 ^
> 	       the # indicates unborn branch
>
> Please consider using contrib/completion/git-prompt.sh to make your life easier.

```

## Matthieu Moy, 2013-05-29 13:08

Subject: Re: git init doesn't create master branch
Message-ID: <vpqbo7udjcy.fsf@anie.imag.fr>
URL: https://gitlist.dev/e/vpqbo7udjcy.fsf%40anie.imag.fr
In-Reply-To: <51A5FC17.8000608@intland.com>

```
"Ákos, Tajti" <akos.tajti@intland.com> writes:

> The command was:
>
> git pull ../dump.dmp refs/heads/*:refs/heads/*

"git pull" does internally a "git fetch" followed by a "git merge".

If you try to pull several branches at the same time, it means you want
to merge all of them together (octopus merge), which probably isn't what
you're trying to do. You probably want just a "git fetch", or specify
only one branch to pull.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

```

## Ákos, Tajti, 2013-05-29 13:20

Subject: Re: git init doesn't create master branch
Message-ID: <51A6009E.8020503@intland.com>
URL: https://gitlist.dev/e/51A6009E.8020503%40intland.com
In-Reply-To: <vpqbo7udjcy.fsf@anie.imag.fr>

```
Thanks! I ill try using fetch.

Ákos

2013.05.29. 15:08 keltezéssel, Matthieu Moy írta:
> "Ákos, Tajti" <akos.tajti@intland.com> writes:
>
>> The command was:
>>
>> git pull ../dump.dmp refs/heads/*:refs/heads/*
> "git pull" does internally a "git fetch" followed by a "git merge".
>
> If you try to pull several branches at the same time, it means you want
> to merge all of them together (octopus merge), which probably isn't what
> you're trying to do. You probably want just a "git fetch", or specify
> only one branch to pull.
>

```

## Ramkumar Ramachandra, 2013-05-29 13:20

Subject: Re: git init doesn't create master branch
Message-ID: <CALkWK0nLJn2EDy9KO+Qp3sHhxgyKQag-575srq5ztuu5LgsmyA@mail.gmail.com>
URL: https://gitlist.dev/e/CALkWK0nLJn2EDy9KO%2BQp3sHhxgyKQag-575srq5ztuu5LgsmyA%40mail.gmail.com
In-Reply-To: <51A5FC17.8000608@intland.com>

```
"Ákos, Tajti" wrote:
> "Cannot merge multiple branches into empty head"
>
> The command was:
>
> git pull ../dump.dmp refs/heads/*:refs/heads/*
>
> Is this a better way of doing this?

pull runs a fetch, which updated .git/FETCH_HEAD.  Now, if
.git/FETCH_HEAD has just one branch (and other not-for-merge entries),
there's no problem.  We just run update-ref HEAD, and get it to point
to the sole branch that was fetched.  If your fetch fetches multiple
branches, and you have a real branch (not "unborn") with
branch.<name>.merge set, we know which one of those branches to merge
in.

Now, what you have is a fetch which fetches multiple branches, and
you're trying to merge that into a non-existent HEAD (or unborn
branch).  There is ambiguity and arguably no "right" thing to do,
which is why git complains.  I'm not sure if it's possible to argue
differently and patch git-pull.sh for your usecase.

There are many possible solutions to the problem, depending on what
you want.  The simplest I can suggest is: ignore the error for that
command and run git reset --hard.

```

## Junio C Hamano, 2013-05-29 18:37

Subject: Re: git init doesn't create master branch
Message-ID: <7va9ndtyxj.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7va9ndtyxj.fsf%40alter.siamese.dyndns.org
In-Reply-To: <51A5FC17.8000608@intland.com>

```
"Ákos, Tajti" <akos.tajti@intland.com> writes:

> Thanks for clarifying this thing for me! I don't really insist on
> having a master branch it's just that I tried to pull from a
> repository bundle and I got this error message:
>
> "Cannot merge multiple branches into empty head"
>
> The command was:
>
> git pull ../dump.dmp refs/heads/*:refs/heads/*
>
> Is this a better way of doing this?

You are not trying to merge all branches contained in the dump, so
"pull" is a wrong thing to use here.

    $ git fetch --update-head-ok ../dump.dmp refs/heads/*:refs/heads/*

would be one way.  Or you could just use the dumpfile as if it were
a normal remote and say (without running "git init")

    $ git clone dump.dmp undump

to extract it in a new directory "undump" (this may require your
dumpfile created with HEAD, though).

```
