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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux