С помощью Git, как отключить предупреждение «LF будет заменен CRLF»


154

В Git, при использовании autocrlf = trueфлага, все еще выдается предупреждение при изменении конца строки.

Я понимаю, для чего предназначено предупреждение, и как отключить флаг окончания строки, но как мне отключить само предупреждение?


Все ответы здесь устарели - после git введены gitattributes. Safecrlf - твой друг, autocrlf - нет! Пожалуйста, смотрите мой ответ
— Руси

Ответы:


282

Вы можете отключить предупреждение с

git config --global core.safecrlf false

(Это отключит только предупреждение, а не саму функцию.)


будет ли отключение предупреждения мешать git заменить lf на crlf? @chronial
— aidonsnous

3
@aidonsnous Из git docs : если для core.safecrlf установлено значение «true» или «warn», git проверяет, является ли преобразование обратимым для текущей настройки core.autocrlf. Для «true» git отвергает необратимые преобразования; для "warn" git только печатает предупреждение, но принимает необратимое преобразование. Если вам не нужно отклонять необратимые преобразования, установка для core.safecrlf значения false подавляет предупреждение, но все же выполняет автоматическое преобразование.
— Дэнни Либин

5

Вы должны использовать core.autocrlf inputи core.eol input. Или просто не позволяйте git вообще изменять окончания строк autocrlf falseи избавляться от подсветки crlfs в diffs и т core.whitespace cr-at-eol. Д. С помощью .

Надеюсь это поможет


Обычно вы хотите, чтобы ваши BAT-скрипты заканчивались и фиксировались с CRLF, а ваш SH-скрипт с LF.
— Сандбург

0

Вы ищете core.whitespaceвариант (см. git config --helpПодробности).

Вы можете установить эту опцию так:

$ git config core.whitespace cr-at-eol

0

Я использовал этот способ:

Сохраните ваши текущие файлы в Git, чтобы ни одна из ваших работ не была потеряна.

git add . -u
git commit -m "Saving files before refreshing line endings"

Удалите каждый файл из индекса Git.

git rm --cached -r .

Перепишите индекс Git, чтобы подобрать все новые окончания строки.

git reset --hard

Добавьте все ваши измененные файлы обратно и подготовьте их к фиксации. Это ваш шанс проверить, какие файлы, если они есть, остались без изменений.

git add .
# It is perfectly safe to see a lot of messages here that read
# "warning: CRLF will be replaced by LF in file."

Зафиксируйте изменения в вашем хранилище.

git commit -m "Normalize all the line endings"

https://help.github.com/articles/dealing-with-line-endings/


13
Я полагаю, что ФП пытался больше не видеть эти предупреждения. Не нормализуют все окончания строк.
— Майк Клак

git rm --cached -r . && git reset --hardкажется, делает
— свое дело

0

Как ни странно, я применил обе конфигурации, как описано здесь, и мой файл .gitconfig содержал эти 2 строки:

[core]
       autocrlf = false
       whitespace = cr-at-eol

И все же я получил предупреждение. Теперь, чтобы попробовать, я закомментировал обе строки, и предупреждение фактически исчезло. Не знаю, почему я поставил их на первое место, однако ...


0

Настройка "core.safecrlf false" работает. Однако после того, как я изменил значение на «true», выходной сигнал изменится с «warning» на «fatal», как показано ниже.

$ git add -A
warning: LF will be replaced by CRLF in .gitignore.
The file will have its original line endings in your working directory

$ git config --global core.safecrlf false

$ git reset

$ git config --global core.safecrlf true

$ git add -A
fatal: LF would be replaced by CRLF in .gitignore

$

В недавнем git лучше использовать gitattributes, чем autocrlf. Смотри мой ответ . Все ответы (по этому вопросу) устарели и устарели
— Руси
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.