Thread (4 messages) flat view 4 messages, 2 authors, 2016-06-15

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

From: Andy Parkins <hidden>
Date: 2016-06-15 22:43:12

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!
# 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help