Похоже, что в этом случае вы включили core.autocrlf
. Это намеченный и правильный способ работы с Windows, поскольку он сохраняет LF-окончания в вашем хранилище и преобразует их в CRLF, если вы используете Windows. Однако это означает, что Git не рассматривает изменение концов строк как изменение, которое можно зафиксировать, поскольку окончания строк в репозитории в любом случае LF.
Если вы полностью, абсолютно Если вы уверены, что ваша кодовая база не будет никогда использоваться в системе, отличной от Windows, и будет никогда использоваться кем-либо, кто использует подсистему Windows для Linux, тогда вы можете включить этот флаг отключен, и Git не изменит окончание вашей строки, поэтому вы будете хранить CRLF (или, точнее, независимо от того, какие окончания строки вы использовали) в хранилище. Однако, если у вас есть пользователи, использующие macOS, Linux или WSL, вы сделаете их очень недовольными, если сделаете это, и тогда у вас, скорее всего, будут дуэльные войны, заканчивающиеся войнами в вашем хранилище.
Если вместо этого вам нужно, чтобы окончания строк для определенного набора файлов всегда были извлечены с определенной последовательностью (например, у вас есть пакетный файл, а CMD не может работать с окончаниями только для LF), тогда вы добавите запись в ваш .gitattributes
файл, который помечает их соответствующим образом:
*.bat eol=crlf
Аналогично, если у вас есть сценарии оболочки, которые всегда должны использовать окончания LF, вы можете написать это:
*.sh eol=lf
Это не предназначен для предпочтений или кроссплатформенной совместимости, но вместо этого, где файл буквально сломан и не может работать, если он имеет неправильные окончания строк. Если проблема заключается только в редакторе (даже в редакторе, который все используют) или в компиляторе, пусть люди используют core.autocrlf
для решения проблемы в своих системах.