# Submodule "git branch" says (HEAD detached at <incorrect-commit>)

4 messages from 2019-07-03 to 2019-07-03. Participants: Julius Smith, Junio C Hamano.
Thread: https://gitlist.dev/t/51422

## Julius Smith, 2019-07-03 08:28

Subject: Submodule "git branch" says (HEAD detached at <incorrect-commit>)
Message-ID: <CAMPRpjUWBXCEagDB5RwsBTYSJWeypOeY47CGWOO95oZiSCTOjw@mail.gmail.com>
URL: https://gitlist.dev/e/CAMPRpjUWBXCEagDB5RwsBTYSJWeypOeY47CGWOO95oZiSCTOjw%40mail.gmail.com

```
Greetings,

I have a repo with two branches A and B, say, and a submodule pointing
to a repo also with two branches, say C and D.  Branch A of the parent
uses branch C of the submodule, while B uses D.  My clone is in a
state (that I've seen often) where branch A's submodule directory
_appears_ to be using a commit for D when really it's a commit for C.
"git branch" in the the submodule directory says "(detached from
<commit-for-D>)" but this seems to be wrong.  I did "git diff
<commit>" in the submodule directory to show that it was the C-commit
and not the D-commit as it appeared.  Could "git branch" in the
submodule directory be referring to the commit at the time it was
first detached and not updating after a "git submodule update --init"
in the parent?

Thanks,
- Julius

-- 
Julius O. Smith III <jos@ccrma.stanford.edu>

```

## Julius Smith, 2019-07-03 08:31

Subject: Re: Submodule "git branch" says (HEAD detached at <incorrect-commit>)
Message-ID: <CAMPRpjUAKPo-fFeE1R_QjMTrc_RST0y-1Jrhcg2Z-xyH7ubt5A@mail.gmail.com>
URL: https://gitlist.dev/e/CAMPRpjUAKPo-fFeE1R_QjMTrc_RST0y-1Jrhcg2Z-xyH7ubt5A%40mail.gmail.com
In-Reply-To: <CAMPRpjUWBXCEagDB5RwsBTYSJWeypOeY47CGWOO95oZiSCTOjw@mail.gmail.com>

```
I should add:
> git --version
git version 2.20.1 (Apple Git-117)

On Wed, Jul 3, 2019 at 1:28 AM Julius Smith <jos@ccrma.stanford.edu> wrote:
>
> Greetings,
>
> I have a repo with two branches A and B, say, and a submodule pointing
> to a repo also with two branches, say C and D.  Branch A of the parent
> uses branch C of the submodule, while B uses D.  My clone is in a
> state (that I've seen often) where branch A's submodule directory
> _appears_ to be using a commit for D when really it's a commit for C.
> "git branch" in the the submodule directory says "(detached from
> <commit-for-D>)" but this seems to be wrong.  I did "git diff
> <commit>" in the submodule directory to show that it was the C-commit
> and not the D-commit as it appeared.  Could "git branch" in the
> submodule directory be referring to the commit at the time it was
> first detached and not updating after a "git submodule update --init"
> in the parent?
>
> Thanks,
> - Julius
>
> --
> Julius O. Smith III <jos@ccrma.stanford.edu>

```

## Junio C Hamano, 2019-07-03 18:17

Subject: Re: Submodule "git branch" says (HEAD detached at <incorrect-commit>)
Message-ID: <xmqq7e8z0ypm.fsf@gitster-ct.c.googlers.com>
URL: https://gitlist.dev/e/xmqq7e8z0ypm.fsf%40gitster-ct.c.googlers.com
In-Reply-To: <CAMPRpjUWBXCEagDB5RwsBTYSJWeypOeY47CGWOO95oZiSCTOjw@mail.gmail.com>

```
Julius Smith <jos@ccrma.stanford.edu> writes:

> "git branch" in the the submodule directory says "(detached from
> <commit-for-D>)" but this seems to be wrong.  I did "git diff
> <commit>" in the submodule directory to show that it was the C-commit
> and not the D-commit as it appeared.  Could "git branch" in the
> submodule directory be referring to the commit at the time it was
> first detached and not updating after a "git submodule update --init"
> in the parent?

There are "detached from" and "detached at" messages.  Their use was
somewhat inconsistent in the older version of Git, but at least
since 2.4.0 (quoting from Documentation/RelNotes/2.4.0.txt):

 * The phrasing "git branch" uses to describe a detached HEAD has been
   updated to agree with the phrasing used by "git status":

    - When HEAD is at the same commit as when it was originally
      detached, they now both show "detached at <commit object name>".

    - When HEAD has moved since it was originally detached, they now
      both show "detached from <commit object name>".

   Previously, "git branch" always used "from".

"git branch" and "git status" should be using the same language to
describe the situation.

```

## Julius Smith, 2019-07-03 19:00

Subject: Re: Submodule "git branch" says (HEAD detached at <incorrect-commit>)
Message-ID: <CAMPRpjULRpzG+Xf8Ezc2+-4cVB7phGs9h+7nxhx-GP44__mfeg@mail.gmail.com>
URL: https://gitlist.dev/e/CAMPRpjULRpzG%2BXf8Ezc2%2B-4cVB7phGs9h%2B7nxhx-GP44__mfeg%40mail.gmail.com
In-Reply-To: <xmqq7e8z0ypm.fsf@gitster-ct.c.googlers.com>

```
Thanks for the explanation.  So then to find out the current commit of
the submodule, I should cd into the submodule directory and say "git
rev-parse HEAD" or "git log -n1", etc.

Suggestion: for a moved HEAD, it would be nice to show "(detached from
<original-commit> now at <current-commit>)".

Thanks for considering, and thanks for a truly great software tool.

- Julius

On Wed, Jul 3, 2019 at 11:17 AM Junio C Hamano <gitster@pobox.com> wrote:
>
> Julius Smith <jos@ccrma.stanford.edu> writes:
>
> > "git branch" in the the submodule directory says "(detached from
> > <commit-for-D>)" but this seems to be wrong.  I did "git diff
> > <commit>" in the submodule directory to show that it was the C-commit
> > and not the D-commit as it appeared.  Could "git branch" in the
> > submodule directory be referring to the commit at the time it was
> > first detached and not updating after a "git submodule update --init"
> > in the parent?
>
> There are "detached from" and "detached at" messages.  Their use was
> somewhat inconsistent in the older version of Git, but at least
> since 2.4.0 (quoting from Documentation/RelNotes/2.4.0.txt):
>
>  * The phrasing "git branch" uses to describe a detached HEAD has been
>    updated to agree with the phrasing used by "git status":
>
>     - When HEAD is at the same commit as when it was originally
>       detached, they now both show "detached at <commit object name>".
>
>     - When HEAD has moved since it was originally detached, they now
>       both show "detached from <commit object name>".
>
>    Previously, "git branch" always used "from".
>
> "git branch" and "git status" should be using the same language to
> describe the situation.
>
>


-- 

Julius O. Smith III <jos@ccrma.stanford.edu>
Professor of Music and, by courtesy, Electrical Engineering
CCRMA, Stanford University
http://ccrma.stanford.edu/~jos/

```
