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