# "fatal: reference is not a tree:" on git checkout <branch>

2 messages from 2013-07-26 to 2013-07-26. Participants: David Abdurachmanov, Duy Nguyen.
Thread: https://gitlist.dev/t/34541

## David Abdurachmanov, 2013-07-26 09:52

Subject: "fatal: reference is not a tree:" on git checkout <branch>
Message-ID: <CC257523-1C84-4F73-9AB0-D1B5A5ECDC45@gmail.com>
URL: https://gitlist.dev/e/CC257523-1C84-4F73-9AB0-D1B5A5ECDC45%40gmail.com

```
Hi,

Reproduce:

$ git clone https://github.com/cms-sw/cmsdist.git
$ git branch -a | grep devel-gcc48
remotes/origin/IB/CMSSW_7_0_X/devel-gcc48
$ git checkout IB/CMSSW_7_0_X/devel-gcc48
fatal: reference is not a tree: IB/CMSSW_7_0_X/devel-gcc48

It has stopped to work with the last pull request. All the references on Google 
talk about submodules, which I don't use. Any ideas what could be causing this
issue?

You can get into detached state by:
$ git checkout origin/IB/CMSSW_7_0_X/devel-gcc48 

You also can checkout a branch by doing:
$ git clone -b IB/CMSSW_7_0_X/devel-gcc48 https://github.com/cms-sw/cmsdist.git
$ git branch
* IB/CMSSW_7_0_X/devel-gcc48

Thanks,
david
```

## Duy Nguyen, 2013-07-26 11:46

Subject: Re: "fatal: reference is not a tree:" on git checkout <branch>
Message-ID: <CACsJy8BWnrH2J+BhG09BpfzMUFw=-XirP7EAa3QKuXtbvQr18Q@mail.gmail.com>
URL: https://gitlist.dev/e/CACsJy8BWnrH2J%2BBhG09BpfzMUFw%3D-XirP7EAa3QKuXtbvQr18Q%40mail.gmail.com
In-Reply-To: <CC257523-1C84-4F73-9AB0-D1B5A5ECDC45@gmail.com>

```
On Fri, Jul 26, 2013 at 4:52 PM, David Abdurachmanov
<david.abd@gmail.com> wrote:
> Hi,
>
> Reproduce:
>
> $ git clone https://github.com/cms-sw/cmsdist.git
> $ git branch -a | grep devel-gcc48
> remotes/origin/IB/CMSSW_7_0_X/devel-gcc48
> $ git checkout IB/CMSSW_7_0_X/devel-gcc48
> fatal: reference is not a tree: IB/CMSSW_7_0_X/devel-gcc48
>
> It has stopped to work with the last pull request. All the references on Google
> talk about submodules, which I don't use. Any ideas what could be causing this
> issue?

"Bad" naming. It interprets the branch name as something-gHEX like the
output from git-describe. Coincidently "cc48" is an umambiguous short
sha-1. check_tracking_name, which prefix "origin/" in, never has a
chance to run.

We should probably check in get_describe_name() that the returned
value is a commit or a tag, but that doesn't really solve the problem.
I think check_tracking_name should have higher priority than
get_describe_name()..
-- 
Duy

```
