С помощью 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.