git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Fwd: Problem: git doesn't update working dir (always) when checkout'ing other branch

From
APAndy Parkins <andyparkins@gmail.com>
Date
May 22, 2007, 08:04 UTC
Message-ID
<200705220904.39487.andyparkins@gmail.com>
In-Reply-To
<566574ef0705212105k1387cf41n18e076c0bdf47ec6@mail.gmail.com>
On Tuesday 2007 May 22, Stian Haklev wrote:
> git --version > ../file1

Good stuff. The ">" only redirects stdout to file1; stderr would still be written to your terminal - did you notice any errors from this script? Could you run again, but append "2>&1" to the end of each redirecting line?

> git status >> ../file1
Seemed fine after this.
> echo checking out works with old >> ../file1
> git checkout works-with-old >> ../file1
Seemed fine after this.
> git status >> ../file1
Seemed fine after this.
> git checkout master >> ../file1
> git status >> ../file1
Kaboom!
Show 18 quoted lines
> # On branch master 
> # Changes to be committed:
> #   (use "git reset HEAD <file>..." to unstage)
> #
> #       deleted:    NOTES
> #       modified:   display-page.rb
> #       deleted:    eee_darwin
> #       modified:   gui.rb
> #       modified:   htmlshrinker-data.rb
> #       modified:   htmlshrinker.rb
> #       modified:   mongrel-web-gui.rb
> #       modified:   mongrel-web.rb
> #       modified:   zarchive.rb
> #       new file:   zcompress.rb
> #       modified:   zdump-7z.rb
> #       modified:   zdump.rb
> #       modified:   zipdoc.rb
> #       deleted:    zutil.rb

Wow. I've never seen anything like that. Neither the index nor the working tree has actually been updated - but HEAD now points at master.

What was the output of that last git-checkout (unfortunately it outputs to stderr not stdout, so you'll need the "2>&1" at the end of each line in your script)? git-checkout won't change HEAD unless the change of index and working tree worked. I can't see the path through the git-checkout script that would have done what you're describing. I think it's going to need a guru on this one, however, we'll keep at it until I can't think of any more questions :-)

Do you observe the same behaviour on all repositories or just this one particular repository?

What's the form of this repository? That is to say, is works-with-old a branch from master or is it an independent branch? e.g.

  0 -- * -- * -- * (master)             0 -- * -- * -- * (master)
                                    or        \
  0 -- * -- * -- * (works-with-old)            * -- * -- * (works-with-old)
                     
I assume once you get into this broken state that running "git-reset --hard" 
restores the working tree back to master?
Does changing that last checkout to "git-checkout -f master" improve things?
Andy
-- 
Dr Andy Parkins, M Eng (hons), MIET
andyparkins@gmail.com
Previous: Stian Haklev
Message 4 of 4 in “Fwd: Problem: git doesn't update working dir (always) when checkout'ing other branch”
  1. Stian HaklevMay 21, 2007
  2. Andy ParkinsMay 21, 2007
  3. Stian HaklevMay 22, 2007
  4. Andy ParkinsMay 22, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.