GIT НЕ будет иметь общих SHA1 для двух текстовых файлов с идентичным текстом, но различными механизмами конца строки (EOL) внутри двоичного представления. Содержимое хранится в виде большого двоичного объекта, который повторно используется , если другая идентичная копия удаляется в хранилище (экономия места!)
По умолчанию, выбранный GIT (дизайнерами), по умолчанию используется символ EOL в стиле * nix (только LF), чтобы для того же текста content вы получали тот же SHA1. (вероятно, важное соображение; -)
Поскольку content / blob больше не запоминает исходный выбор EOL пользователя (помните, что он, возможно, теперь находится в некотором удаленном хранилище), Git должен сделать некоторые предположения (основанные на опциях) о том, как воссоздать исходный файл пользователя (был ли это CRLF или это просто LF) таким образом, что вы (и ваши инструменты) можете использовать.
Обычная рекомендация состоит в том, что локально каждый пользователь (a) преобразует в * nix LF окончания при фиксации в BLOB-объекте (так что все будут видеть общие имена BLA-объектов SHA1) (a / k / a Right Thing) и (b) локально установите опцию воссоздания на настройку локальной системы, например * nix (LF) или Windows (CRLF) и т. д.
Установите некоторые локальные стандарты для своих пользователей, и получите один большой 'EOL / LF / CRLF и исправление пробелов', и у вас все будет хорошо (плюс переподготовка новых пользователей)
Вы также можете убедиться, что вы (каждый пользователь) используете общую настройку пробелов, чтобы вкладки v пробелы и конечные пробелы не доставляли больше diff
неудобств!