env:
- Windows 7
- msysgit
Когда я git commit
, он говорит:
warning: LF will be replaced by CRLF.
Этот предупреждающий хвост направлен назад?
Я редактирую файл в Windows, конец строки CRLF
, как на этой картинке:
И git меняет его на LF
для фиксации в репо.
Итак, я думаю, что правильное предупреждение:
warning: CRLF will be replaced by LF.
Ответы:
В зависимости от редактора, который вы используете, текстовый файл с LF не обязательно сохранять с CRLF: последние редакторы могут сохранять стиль eol. Но этот параметр конфигурации git настаивает на изменении этих ...
Просто убедитесь, что (как я рекомендую здесь ):
Таким образом, вы избегаете каких-либо автоматических преобразований и по-прежнему можете указывать их через
.gitattributes
файл иcore.eol
директивы .Нет: вы используете Windows, и на
git config
странице справки упоминаетсяКак описано в разделе « git, заменяющий LF на CRLF », это должно происходить только при проверке (не при фиксации) с
core.autocrlf=true
.Как уже упоминалось в Сяопина «s ответ , что предупреждение является такой же , как:
Как упоминалось в
git-for-windows/git
выпуске 1242 :Примечание: Git 2,19 (сентябрь 2018), при использовании
core.autocrlf
, фиктивная «LF будет заменен CRLF» предупреждение теперь подавляется .Как справедливо комментирует Квайлар , если при фиксации происходит преобразование, то только в.
LF
Это конкретное предупреждение "
LF will be replaced by CRLF
" исходит от convert.c # check_safe_crlf () :Он вызывается
convert.c#crlf_to_git()
, сам вызываетсяconvert.c#convert_to_git()
, сам вызываетсяconvert.c#renormalize_buffer()
.И последний
renormalize_buffer()
только вызываетсяmerge-recursive.c#blob_unchanged()
.Поэтому я подозреваю, что это преобразование происходит
git commit
только в том случае, если указанная фиксация является частью процесса слияния.Примечание. В Git 2.17 (второй квартал 2018 г.) очистка кода добавляет некоторые пояснения.
См. Коммит 8462ff4 (13 января 2018 г.) Торстена Бёгерсхаузена (
tboegi
) .(Объединено Junio C Hamano -
gitster
- в коммите 9bc89b1 , 13 февраля 2018 г.)Обратите внимание, что регрессия, представленная в 8462ff4 («
convert_to_git()
:safe_crlf/checksafe
становитсяint conv_flags
», 2018-01-13, Git 2.17.0) еще в цикле Git 2.17, вызвалаautocrlf
перезапись с выдачей предупреждающего сообщения, несмотря на установкуsafecrlf=false
.См. Commit 6cb0912 (4 июня 2018 г.) Энтони Соттиля (
asottile
) .(Объединено Junio C Hamano -
gitster
- в фиксации 8063ff9 , 28 июня 2018 г.)источник
core.autocrlf=true
будет уступать LF в репо и CRLF в рабочем дереве imho (даже под Windows). Источник: ссылкаДА, предупреждение перевернуто.
И на самом деле это даже не должно быть предупреждением. Поскольку все это предупреждение говорит (но, к сожалению, наоборот), что символы CRLF в вашем файле с окончанием строки Windows будут заменены на LF при фиксации. Это означает, что он нормализован до тех же окончаний строк, которые используются * nix и MacOS.
Ничего странного не происходит, это именно то поведение, которое вы обычно хотели бы.
Это предупреждение в его текущей форме является одним из двух:
;)
источник
--Обновление 9 июля ---
Удалено сообщение «Это правильно и точно», прокомментированное @mgiuca.
======
Нет . Это НЕ говорит о ваших файлах с расширением
CRLF
. Вместо этого речь идет о файлах с расширениемLF
.Он должен читать:
Эта картинка должна объяснить, что это значит.
источник
Все это предполагает
core.autocrlf=true
Исходная ошибка:
Что ДОЛЖНО читать ошибка:
Пояснение здесь :
По сути, локальный файл, который ранее был LF, теперь будет иметь локальный CRLF
источник
git config --global core.autocrlf false
хорошо работает для глобальных настроек.Но если вы используете Visual Studio, может также потребоваться изменить
.gitattributes
для некоторых типов проектов ( например, приложения библиотеки классов C # ):* text=auto
источник
После того, как я установил,
core.autocrlf=true
я получал «LF будет заменен на CRLF» (обратите внимание, что «CRLF будет заменен на LF»), когда я редактировалgit add
(или, возможно, он был включенgit commit
?) Редактировал файлы в окнах в репозитории (который использует LF), который был проверен перед установкойcore.autocrlf=true
.Я совершил новую покупку с помощью
core.autocrlf=true
и теперь не получаю эти сообщения.источник
Если вы используете Visual Studio 2017, 2019, вы можете:
источник
.gitconfig
or.git/config
, not.gitignore
, который указывает файлы, которые git игнорирует.Сделайте простую вещь:
источник