# not robust inconsistent git 2.40.1 with HEAD -> master, origin/main, origin/HEAD, origin/master, main

6 messages from 2023-05-30 to 2023-05-31. Participants: Carlos, Kristoffer Haugsbakk, Philip Oakley.
Thread: https://gitlist.dev/t/59809

## Carlos, 2023-05-30 18:14

Subject: not robust inconsistent git 2.40.1 with HEAD -> master, origin/main, origin/HEAD, origin/master, main
Message-ID: <lxh4jpacuv5ivqp35w5vpbcjlw67r7ix3yog6cc3cu5ij7yqho@mrtr24xxdstx>
URL: https://gitlist.dev/e/lxh4jpacuv5ivqp35w5vpbcjlw67r7ix3yog6cc3cu5ij7yqho%40mrtr24xxdstx

```
Running git 2.40.1 with HEAD -> master, origin/main, origin/HEAD, origin/master, main with initial commit on main does not show all the objects from master


! [main] Initial commit
 * [master] Initial commit
  ! [origin/master] Initial commit
---
+*+ [main] Initial commit

the chunk of objects are on master and not main, and yet it shows
nothing once checking out to master. 

the git-clone operation is not consistent either. It's a disaster.

One would think that by now with the more developed work put on to git, it'd
be safe to assume the more sense there's on newer versions. But no. This
 is the opposite actually. 

Now. If by any chance the git-branch operation were to return:

  main
* master

after git-clone, then objects are indeed in place. That is. On master

but not if git-branch returns 

  main
* master
  origin/master



-- 
This login session: $13.99


```

## Kristoffer Haugsbakk, 2023-05-31 10:08

Subject: Re: not robust inconsistent git 2.40.1 with HEAD -> master, origin/main, origin/HEAD, origin/master, main
Message-ID: <ea3e1ea7-7f2e-4f15-b910-06c3cad54e24@app.fastmail.com>
URL: https://gitlist.dev/e/ea3e1ea7-7f2e-4f15-b910-06c3cad54e24%40app.fastmail.com
In-Reply-To: <lxh4jpacuv5ivqp35w5vpbcjlw67r7ix3yog6cc3cu5ij7yqho@mrtr24xxdstx>

```
Hi

On Tue, May 30, 2023, at 20:14, Carlos wrote:
> Running git 2.40.1 with HEAD -> master, origin/main, origin/HEAD,
> origin/master, main with initial commit on main does not show all the
> objects from master

Does this mean that `HEAD` and all of these other things point to the
same commit? Is this the output of `git log` with decorations?

What are `main` and `master` meant to represent? One often doesn’t use
both of these names unless you have a legacy setup (originally `master`,
then moved to `main`).

What can be confusing to me is that git(1) uses `master` as the default
branch name that you get after `git init`—this can be configured, but
`master` is currently the default.[1] Meanwhile, GitHub uses `main` as
the default name. So what sometimes happens:

1. Someone makes a local repository with `master` as the initial branch
2. They make a repository on GitHub
3. They click on “add a readme” or something
4. Then GitHub creates a branch `main` with that readme addition on it
5. They push their local changes and end up with two “default” branches:
   `master` with their own changes, and `main` with the default readme

Maybe both you (locally) and GitHub made commits named “Initial commit”?

† 1: I’ve heard that the default might be `main` on Git For Windows, though?

> ! [main] Initial commit
>  * [master] Initial commit
>   ! [origin/master] Initial commit
> ---
> +*+ [main] Initial commit
>
> the chunk of objects are on master and not main, and yet it shows
> nothing once checking out to master.

It looks like both `master` and `main` point to the same commit.

Do you have some command that you expected X output or behavior from,
but instead got Y output or behavior?

> the git-clone operation is not consistent either. It's a disaster.

What do you expect it to do and what actually happens?

Cheers

-- 
Kristoffer Haugsbakk

```

## Philip Oakley, 2023-05-31 10:57

Subject: Re: not robust inconsistent git 2.40.1 with HEAD -> master, origin/main, origin/HEAD, origin/master, main
Message-ID: <319cfa79-a508-127f-c201-9f50d5e6fe6a@iee.email>
URL: https://gitlist.dev/e/319cfa79-a508-127f-c201-9f50d5e6fe6a%40iee.email
In-Reply-To: <lxh4jpacuv5ivqp35w5vpbcjlw67r7ix3yog6cc3cu5ij7yqho@mrtr24xxdstx>

```
On 30/05/2023 19:14, Carlos wrote:
> Running git 2.40.1 with HEAD -> master, origin/main, origin/HEAD, origin/master, main with initial commit on main does not show all the objects from master
> 
> 
> ! [main] Initial commit
>  * [master] Initial commit
>   ! [origin/master] Initial commit
> ---
> +*+ [main] Initial commit
> 

this is the output of `git show-branch` [1] which has its own special
display format. It's not often used these days.

The `!` are column markers, as is `*` for the current branch.
You have three branches listed
Then you have the `---` divider

Finally you has the single commit, showing which branches the commit is
'on'.

Be careful to discriminate between being 'on' a branch (at it's tip, by
name); 'at' an oid (object id / hash); and `in` a branch (below its
tip); etc.


[1] https://git-scm.com/docs/git-show-branch

> the chunk of objects are on master and not main, and yet it shows
> nothing once checking out to master. 
> 
> the git-clone operation is not consistent either. It's a disaster.
> 
> One would think that by now with the more developed work put on to git, it'd
> be safe to assume the more sense there's on newer versions. But no. This
>  is the opposite actually. 
> 
> Now. If by any chance the git-branch operation were to return:
> 
>   main
> * master
> 
> after git-clone, then objects are indeed in place. That is. On master
> 
> but not if git-branch returns 
> 
>   main
> * master
>   origin/master
> 
> 
> 
Philip

```

## Philip Oakley, 2023-05-31 13:22

Subject: Re: not robust inconsistent git 2.40.1 with HEAD -> master, origin/main, origin/HEAD, origin/master, main
Message-ID: <30385b42-0c6a-3588-2b13-0552c23727f2@iee.email>
URL: https://gitlist.dev/e/30385b42-0c6a-3588-2b13-0552c23727f2%40iee.email
In-Reply-To: <319cfa79-a508-127f-c201-9f50d5e6fe6a@iee.email>

```
On 31/05/2023 11:57, Philip Oakley wrote:
> On 30/05/2023 19:14, Carlos wrote:
>> Running git 2.40.1 with HEAD -> master, origin/main, origin/HEAD, origin/master, main with initial commit on main does not show all the objects from master
>>
>>
>> ! [main] Initial commit
>>  * [master] Initial commit
>>   ! [origin/master] Initial commit
>> ---
>> +*+ [main] Initial commit
>>
> 
> this is the output of `git show-branch` [1] which has its own special
> display format. It's not often used these days.
> 
> The `!` are column markers, as is `*` for the current branch.
> You have three branches listed
> Then you have the `---` divider
> 
> Finally you has the single commit, showing which branches the commit is
> 'on'.
> 
> Be careful to discriminate between being 'on' a branch (at it's tip, by
> name); 'at' an oid (object id / hash); and `in` a branch (below its
> tip); etc.
> 
> 
> [1] https://git-scm.com/docs/git-show-branch
> 
>> the chunk of objects are on master and not main, and yet it shows
>> nothing once checking out to master. 
>>
>> the git-clone operation is not consistent either. It's a disaster.
>>
>> One would think that by now with the more developed work put on to git, it'd
>> be safe to assume the more sense there's on newer versions. But no. This
>>  is the opposite actually. 
>>
>> Now. If by any chance the git-branch operation were to return:
>>
>>   main
>> * master
>>
>> after git-clone, then objects are indeed in place. That is. On master
>>
>> but not if git-branch returns 
>>
>>   main
>> * master
>>   origin/master
>>

You may have accidentally created a local branch called `origin/master`
which you are now confusing with the (unlisted) remote tracking branches.

What does

	git branch -ra

produce?

It will show the local branches first, and then your
`remotes/repo/branches` list (probably colourised).

This should help confirm what you have.
>>
>>
> Philip
P.

```

## Carlos, 2023-05-31 21:35

Subject: Re: not robust inconsistent git 2.40.1 with HEAD -> master, origin/main, origin/HEAD, origin/master, main
Message-ID: <a7xmox7j6katje62wx6hhclb7itfbhxnda44s4ve7g3cjyzm6j@2tosx6g6cpgv>
URL: https://gitlist.dev/e/a7xmox7j6katje62wx6hhclb7itfbhxnda44s4ve7g3cjyzm6j%402tosx6g6cpgv
In-Reply-To: <30385b42-0c6a-3588-2b13-0552c23727f2@iee.email>

```
On Wed, May 31, 2023 at 02:22:59PM +0100, Philip Oakley wrote:
> On 31/05/2023 11:57, Philip Oakley wrote:
> > On 30/05/2023 19:14, Carlos wrote:
> >> Running git 2.40.1 with HEAD -> master, origin/main, origin/HEAD, origin/master, main with initial commit on main does not show all the objects from master
> >>
> >>
> >> ! [main] Initial commit
> >>  * [master] Initial commit
> >>   ! [origin/master] Initial commit
> >> ---
> >> +*+ [main] Initial commit
> >>
> > 
> > this is the output of `git show-branch` [1] which has its own special
> > display format. It's not often used these days.
> > 
> > The `!` are column markers, as is `*` for the current branch.
> > You have three branches listed
> > Then you have the `---` divider
> > 
> > Finally you has the single commit, showing which branches the commit is
> > 'on'.
> > 
> > Be careful to discriminate between being 'on' a branch (at it's tip, by
> > name); 'at' an oid (object id / hash); and `in` a branch (below its
> > tip); etc.
> > 
> > 
> > [1] https://git-scm.com/docs/git-show-branch
> > 
> >> the chunk of objects are on master and not main, and yet it shows
> >> nothing once checking out to master. 
> >>
> >> the git-clone operation is not consistent either. It's a disaster.
> >>
> >> One would think that by now with the more developed work put on to git, it'd
> >> be safe to assume the more sense there's on newer versions. But no. This
> >>  is the opposite actually. 
> >>
> >> Now. If by any chance the git-branch operation were to return:
> >>
> >>   main
> >> * master
> >>
> >> after git-clone, then objects are indeed in place. That is. On master
> >>
> >> but not if git-branch returns 
> >>
> >>   main
> >> * master
> >>   origin/master
> >>
> 
> You may have accidentally created a local branch called `origin/master`
> which you are now confusing with the (unlisted) remote tracking branches.
> 

if the remotes are in place, 

  main
* master
  origin/master
  remotes/origin/HEAD -> origin/main
  remotes/origin/main
  remotes/origin/master


what exactly is origin/master doing there? even by assuming I created it
(which I didn't but let's say I did) then:

git checkout origin/master

warning: refname 'origin/master' is ambiguous.
Switched to branch 'origin/master'

confirms it that given the above, it follows that `git checkout
origin/master` would fail to create and to be in quote  in 'detached
HEAD' state. To look around, make experimental changes and commit them,
and to discard any commits one makes in this state without impacting
any branches by switching back to a branch` . blah blah blah

as does the one without the origin/master , right? 

Now, if I were to do the same under the worktree (the tree holding the
contents correctly on both main and master, right?) with git branch -ra:


  main
* master
  remotes/origin/HEAD -> origin/main
  remotes/origin/main
  remotes/origin/master

which behaves accordingly

* (HEAD detached at origin/master)
  main
  master
  remotes/origin/HEAD -> origin/main
  remotes/origin/main
  remotes/origin/master


> What does
> 
> 	git branch -ra
> 
> produce?
> 
> It will show the local branches first, and then your
> `remotes/repo/branches` list (probably colourised).
> 
> This should help confirm what you have.
> >>
> >>
> > Philip
> P.
> 

-- 
Modeling paged and segmented memories is tricky business.
		-- P. J. Denning


```

## Carlos, 2023-05-31 22:36

Subject: Re: not robust inconsistent git 2.40.1 with HEAD -> master, origin/main, origin/HEAD, origin/master, main
Message-ID: <kewfqedoob2cptihhxoe6pp4jj63pw7qcldqvmb52cg7fbhzv5@xypplc3psbv5>
URL: https://gitlist.dev/e/kewfqedoob2cptihhxoe6pp4jj63pw7qcldqvmb52cg7fbhzv5%40xypplc3psbv5
In-Reply-To: <a7xmox7j6katje62wx6hhclb7itfbhxnda44s4ve7g3cjyzm6j@2tosx6g6cpgv>

```
On Wed, May 31, 2023 at 05:35:58PM -0400, Carlos wrote:
> On Wed, May 31, 2023 at 02:22:59PM +0100, Philip Oakley wrote:
> > On 31/05/2023 11:57, Philip Oakley wrote:
> > > On 30/05/2023 19:14, Carlos wrote:
> > >> Running git 2.40.1 with HEAD -> master, origin/main, origin/HEAD, origin/master, main with initial commit on main does not show all the objects from master
> > >>
> > >>
> > >> ! [main] Initial commit
> > >>  * [master] Initial commit
> > >>   ! [origin/master] Initial commit
> > >> ---
> > >> +*+ [main] Initial commit
> > >>
> > > 
> > > this is the output of `git show-branch` [1] which has its own special
> > > display format. It's not often used these days.
> > > 
> > > The `!` are column markers, as is `*` for the current branch.
> > > You have three branches listed
> > > Then you have the `---` divider
> > > 
> > > Finally you has the single commit, showing which branches the commit is
> > > 'on'.
> > > 
> > > Be careful to discriminate between being 'on' a branch (at it's tip, by
> > > name); 'at' an oid (object id / hash); and `in` a branch (below its
> > > tip); etc.
> > > 
> > > 
> > > [1] https://git-scm.com/docs/git-show-branch
> > > 
> > >> the chunk of objects are on master and not main, and yet it shows
> > >> nothing once checking out to master. 
> > >>
> > >> the git-clone operation is not consistent either. It's a disaster.
> > >>
> > >> One would think that by now with the more developed work put on to git, it'd
> > >> be safe to assume the more sense there's on newer versions. But no. This
> > >>  is the opposite actually. 
> > >>
> > >> Now. If by any chance the git-branch operation were to return:
> > >>
> > >>   main
> > >> * master
> > >>
> > >> after git-clone, then objects are indeed in place. That is. On master
> > >>
> > >> but not if git-branch returns 
> > >>
> > >>   main
> > >> * master
> > >>   origin/master
> > >>
> > 
> > You may have accidentally created a local branch called `origin/master`
> > which you are now confusing with the (unlisted) remote tracking branches.
> > 
> 
> if the remotes are in place, 
> 
>   main
> * master
>   origin/master
>   remotes/origin/HEAD -> origin/main
>   remotes/origin/main
>   remotes/origin/master
> 
> 
> what exactly is origin/master doing there? even by assuming I created it
> (which I didn't but let's say I did) then:
> 
> git checkout origin/master
> 
> warning: refname 'origin/master' is ambiguous.
> Switched to branch 'origin/master'
> 
> confirms it that given the above, it follows that `git checkout
> origin/master` would fail to create and to be in quote  in 'detached
> HEAD' state. To look around, make experimental changes and commit them,
> and to discard any commits one makes in this state without impacting
> any branches by switching back to a branch` . blah blah blah
> 
> as does the one without the origin/master , right? 
> 

Fe de errata:

*unlike the one without the origin/master, which *successfully* does,
as shown below:

> Now, if I were to do the same under the worktree (the tree holding the
> contents correctly on both main and master, right?) with git branch -ra:
> 
> 
>   main
> * master
>   remotes/origin/HEAD -> origin/main
>   remotes/origin/main
>   remotes/origin/master
> 
> which behaves accordingly
> 
> * (HEAD detached at origin/master)
>   main
>   master
>   remotes/origin/HEAD -> origin/main
>   remotes/origin/main
>   remotes/origin/master
> 
> 
> > What does
> > 
> > 	git branch -ra
> > 
> > produce?
> > 
> > It will show the local branches first, and then your
> > `remotes/repo/branches` list (probably colourised).
> > 
> > This should help confirm what you have.
> > >>
> > >>
> > > Philip
> > P.
> > 
> 
> -- 
> Modeling paged and segmented memories is tricky business.
> 		-- P. J. Denning
> 
> 

-- 
Put no trust in cryptic comments.


```
