У меня возникла эта проблема после намеренного удаления разрешения на выполнение из файлов исходного кода (~ 26K файлов).Затем git diff говорит, что все файлы изменились!Ответ с core.filemode мне не помогает, так как это влияет только на diffs для вашего рабочего каталога, а не diff для 2 коммитов в репо.
Ответ заключался в использовании (большой страшной) команды filter-branch.В частности, все, что вам нужно набрать:
git filter-branch -f --tree-filter 'find * -type f | xargs chmod 644 ' -- --all
из корня вашего рабочего каталога.Конечно, сначала сделайте копию своего репо (cp -pr ~ / repo.git ~ / repo-orig.git или аналогичную) на случай, если вам нужно будет повторить попытку.
Наслаждайтесь!