Як вимкнути Git, як вимкнути попередження “LF буде замінено CRLF”


153

У Git при використанні autocrlf = trueпрапора все одно подається попередження при зміні закінчень рядків.

Я розумію, що таке попередження, і як вимкнути прапор, що закінчується рядком, але як вимкнути саме попередження?


Усі відповіді тут застарілі - після введення git gitattributes. Safecrlf - твій друг autocrlf ні! Будь ласка, дивіться мою відповідь
Русі

Відповіді:


280

Ви можете вимкнути попередження за допомогою

git config --global core.safecrlf false

(Це вимкне лише попередження, а не саму функцію.)


вимкне попередження, щоб запобігти заміні git замінити lf crlf? @chronial
aidonsnous

3
@aidonsnous Від git docs : Якщо для core.safecrlf встановлено значення "вірно" або "попереджати", git перевіряє, чи є перетворення оборотним для поточного налаштування core.autocrlf. Для "справжнього" git відкидає незворотні перетворення; для "попередження" git друкує лише попередження, але приймає незворотні перетворення. Якщо вам не потрібно відкидати незворотні перетворення, встановлення core.safecrlf на помилкове придушує попередження, але все одно автоматично перетворюється.
Денні Лібін

5

Ви повинні використовувати core.autocrlf inputі core.eol input. Або просто не дозволяйте git взагалі змінювати закінчення рядків autocrlf falseі позбавлятись від виділення плівки в диференціалах тощо 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здається, зробить трюк, дякую
Shanimal

0

Як не дивно, я застосував обидві конфігурації, як пояснено тут, і мій файл .gitconfig містив ці 2 рядки:

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

Але я отримав попередження. Тепер, щоб спробувати, я прокоментував обидва рядки, і попередження фактично зникло. Не маю уявлення, чому я ставлю їх на перше місце, однак ...


0

Установка "core.safecrlf false" працює. Однак після того, як я змінив значення на "справжнє" Вихід змінюється з "попередження" на "фатальний", як показано нижче

$ 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.