Я думаю, что реальная проблема, которую вам нужно решить, это то, как файлы отличаются, и есть ли разница, которую вы ожидаете увидеть?
Традиционное значение по умолчанию - git вообще не изменяет содержимое файла на git add
в хранилище. Более поздние установщики Windows git
включают core.autocrlf
, что переводит unix в окончания строк Windows при оформлении заказа, и наоборот при добавлении в хранилище.
По этой причине, если у вас больше ожидаемых изменений, которые вы ожидаете, часто рекомендуется git add
все ожидающие файлы (например, через git add -u
).
На этом этапе будут применяться любые фильтры очистки / удаления пятен, и git diff --cached
должен давать разумную разницу.
Если у вас есть промежуточные файлы, которые, по мнению git, отличаются, но разница не видна, вы можете взглянуть на необработанные байты, чтобы узнать, есть ли различия в невидимых символах.
Для этого вы можете использовать такой инструмент, как hexdump
.
Предположим, что myfile.txt
имеет различия, которые не видны, вы можете попробовать что-то вроде этого.
# Extract raw versions of the differing files and hexdump to some temporary files
git cat-file blob :myfile.txt | hexdump -C >myfile-stagetmp.bytes
git cat-file blob HEAD:myfile.txt | hexdump -C >myfile-headtmp.bytes
# Diff them. (Yes, you don't have to use git diff!)
git diff --no-index myfile-stagetmp.bytes myfile-headtmp.bytes