threads / discuss / 59809

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

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

## tl;dr

6 messages between May 30, 2023 and May 31, 2023.

replies: 5people: 3as markdown or json

Carlos· May 30, 2023, 18:14 UTC · lore
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· May 31, 2023, 10:08 UTC · re: Carlos · lore

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

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?
Show 8 quoted lines
> ! [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· May 31, 2023, 10:57 UTC · re: Carlos · lore

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

On 30/05/2023 19:14, Carlos wrote:
Show 9 quoted lines
> 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
Show 24 quoted lines
> 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· May 31, 2023, 13:22 UTC · re: Philip Oakley · lore

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

On 31/05/2023 11:57, Philip Oakley wrote:
Show 50 quoted lines
> 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· May 31, 2023, 21:35 UTC · re: Philip Oakley · lore

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

On Wed, May 31, 2023 at 02:22:59PM +0100, Philip Oakley wrote:
Show 55 quoted lines
> 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
Show 15 quoted lines
> 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· May 31, 2023, 22:36 UTC · re: Carlos · lore

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

On Wed, May 31, 2023 at 05:35:58PM -0400, Carlos wrote:
Show 83 quoted lines
> 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:

Show 41 quoted lines
> 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.

← back to recent threads