Git status shows files as changed even though contents are the same
I have resolved this problem using following steps
-
Remove every file from Git's index.
git rm --cached -r .
-
Rewrite the Git index to pick up all the new line endings.
git reset --hard
Note that step 2 may remove your local changes. Solution was part of steps described on git site https://help.github.com/articles/dealing-with-line-endings/
Have you changed the mode of the files?
I did it on my machine and the local dev machine had 777 given to all the files whereas the repo had 755 which showed every file as modified. I did git diff
and it showed the old mode and new mode are different.
If that is the problem then you can easily ignore them by
git config core.filemode false
Cheers
Update: as per the comment on this question, the problem has been solved:
That is easy: the first file has CRLF line-ends (windows), the second LF (Unix). The
file
util (available in git\usr\bin) will show you that (file a b
will reply something likea: ASCII text, with CRLF line terminators b: ASCII text
)
Original answer below:
The diff you show does not show a single different line. Can you post .git/config (or better git config -l
).
You might have some whitespace ignores activated
You should try to disable core.whitespace=fix,-indent-with-non-tab,trailing-space,cr-at-eol
;
also
git show HEAD:myfile|md5sum
md5sum myfile
could be used to verify that the files are in fact different. Using external diff could work as well
git show HEAD:myfile > /tmp/myfile.HEAD
diff -u myfile /tmp/myfile.HEAD
# or if you prefer an interactive tool like e.g.:
vim -d myfile /tmp/myfile.HEAD
I had the same problem. After win->lin copy I've got all files modified. I used fromdos to fix line endings and then
git add -uv
to add changes. It added 3 files (not all of them), which I actually modified. After that git status shows only 3 modified files. After git commit everything is ok with git status.
In my case the files were appeared as modified after changing the files permissions.
To make git ignore permission changes, do the following :
# For the current repository
git config core.filemode false
# Globally
git config --global core.filemode false