Git: Как мне избавиться от "предупреждения: CRLF будет заменен LF" без отключения safecrlf?

Я новичок в git, и я много читал о окончаниях строк и как git лечит их. Кстати, я на Windows. я сделал a .gitattributes и установить, например, *.txt в текст. Когда я фиксирую файл .txt, я получаю предупреждение:

предупреждение: CRLF будет заменен на LF в any.txt

Но я это знаю. Мне это не нужно. Замена линии окончание в текстовых файлах - это то, что я хочу.

Теперь установка safecrlf на false делает предупреждение исчезнут, но руководство для safecrlf гласит:

Если true, делает git проверяет, является ли преобразование CRLF обратимым когда включено преобразование конца строки. git проверит, если команда изменяет файл в дереве работы либо непосредственно или косвенно. Например, запись файла, за которым следует проверка того же файла должна привести к исходному файлу в дереве работ. Если это не так для текущей установка core.autocrlf, git отклонит файл.

От этого safecrlf кажется хорошей идеей. Однако я не понимаю, почему установка safecrlf на true дает мне предупреждения о моих текстовых файлах; мне кажется, что это разные проблемы - предупреждение о текстовых файлах и проверка, если обратимая. Действительно, git не отвергает мои файл.

Могу ли я избавиться от предупреждений для текстовых файлов и safecrlf установлен? Или я что-то не понимаю?

Ответ 1

Насколько я могу судить, установка core.safecrlf в false - это только способ отключить это предупреждение.

safecrlf обычно не требуется, если ваши атрибуты установлены правильно. Точкой safecrlf является предотвращение нормализации в файле, который должен иметь смешанные (или не-LF) окончания строки в репозитории. Это действительно полезно только в сочетании с core.autocrlf (чтобы убедиться, что его автоматические догадки ничего не могут уничтожить), и если вы настраиваете свои собственные атрибуты через .gitattributes, все должно быть в порядке, чтобы отключить все это.

Ответ 2

В .gitattributes вы можете:

# normalize text files to use lf
text eol=lf

# except these which we want crlf
*.txt eol=crlf

Ответ 3

Короткий ответ на ваш вопрос НЕТ.

Поскольку, в основном, настройка core.safecrlf контролирует "уровень предупреждения":

  • false - действовать без предупреждения
  • warn - продолжить с предупреждением
  • true - не продолжать

Итак, вам нужно выбрать вариант, который вам больше всего подходит.