问题
I have two branches in my local git repository: master and anotherbranch. When I switch from master to anotherbranch with git checkout anotherbranch and run git status I see modified files.
I undo these modifications with git reset HEAD and then git status does not display them. However when I switch to master and switch to the branch afterwards I see these modified files again.
Could you please explain what is going on?
回答1:
You wouldn't have autocrlf set to true, by any chance?
Because it can change your files on a checkout...
See the thread "core.autocrlf considered half-assed":
Back then, I was not a fan of the
core.autocrlfsupport.
*But I have to admit that in the meantime, I turned into an outright un-fan of the feature. Not because its intent is wrong, but because its implementation is lousy.Just try to
git reset --hardorgit stashwhen there are files with DOS line endings and when core.autocrlf is not false.And then despair.
回答2:
If the items are not tracked in either branch, the files will show up in git status as untracked, and will survive across checkouts
回答3:
The git reset --hard will remove the modification from the index. Try with this additional argument it should be OK after that.
来源:https://stackoverflow.com/questions/5237783/why-do-files-in-the-working-directory-get-the-modified-status-on-switching-betwe