Git, добавление файлов в хранилище приводит к фатальной ошибке для LF -> CRLF - PullRequest
40 голосов
/ 28 декабря 2011

Я новичок в Git и мне нужна помощь. Я использую msysgit на Windows.

Когда я выполняю команду git add [folderName], я получаю ответ:

fatal: LF would be replaced by CRLF in [.css file or .js file]

и затем, если вы попытаетесь сделать коммит, ничего не произойдет.

$ git commit
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       so01/
nothing added to commit but untracked files present (use "git add" to track)

Некоторые из этих файлов css / js были загружены из сети, поэтому, я думаю, именно поэтому они имеют LF Если я открою файл и вырежу / вставлю содержимое, то получу сообщение об ошибке в следующем файле и т. Д.

Любая помощь будет высоко ценится.

Редактировать

Установка core.autocrlf в ложное положение, похоже, решает проблему, но я читал во многих сообщениях, чтобы не устанавливать этот параметр в ложное значение.

Может кто-нибудь указать мне, где я могу узнать, какие проблемы могут возникнуть в этой ситуации?

Ответы [ 4 ]

24 голосов
/ 26 июля 2012

очень плохо знаком с этим, поэтому установка для core.autocrlf значения false не имела для меня особого смысла. Так что для других новичков, перейдите в файл конфигурации в вашей папке .git и добавьте:

[core]
    autocrlf = false

под заголовком [core].

22 голосов
/ 28 декабря 2011

Доверьтесь редакторам кода, чтобы манипулировать окончаниями строк.Авто CRLF должен быть ложным.Не позволяйте управлению исходным кодом становиться слишком умным.Если вам не нужен инструмент управления исходным кодом для изменения концов строк, не делайте этого.Это повредит.

Повторяю из принятого ответа: «Если вы не видите специфическую обработку, которая должна иметь дело с нативным eol, вам лучше оставить autocrlf в false."

Также изкнига progit в конце раздела об autocrlf:

«Если вы программист Windows и делаете проект только для Windows, вы можете отключить эту функцию, записав возврат каретки в хранилище, установивзначение конфигурации в false "

Единственная другая помощь, которую я могу дать, заключается в том, что если вы выберете другой маршрут, ознакомьтесь с vim -b, который будет отображать специальные символы, такие как CR в MSysGit и git show HEAD:path/to/your/file.txt, которые должен показать вам файл так, как его хранил git.

Установите core.whitespace cr-at-eol, чтобы патчи и различия не выделяли CR как возможные проблемные пробелы.

Не стоит хлопот.Хранить как есть.

6 голосов
/ 28 декабря 2011

Проблема, вероятно, возникает из-за того, что вы настроили Git для внутреннего хранения файлов с crlf с настройкой core.eol.Когда вы добавляете файл, Git предупреждает вас, что он изменит его на внутренний формат.

Git лучше всего работает с lf окончаниями строк, поэтому, если возможно, всегда работайте с core.eol = lf.

Это должно объяснить, когда использовать core.autocrlf, Почему я должен использовать core.autocrlf = true в Git?

Возможно, вы также захотите использовать core.safecrlf.Проверьте git config --help для получения подробной информации о настройках.

0 голосов
/ 03 июня 2015

Автоматическое определение форматов в git работает довольно хорошо.Поэтому core.autocrlf=true - это действительно хорошая идея для Windows.

Говоря git config --global core.safecrlf=false говорит git: Эй, пожалуйста, конвертируйте мои неправильные окончания строки (только LF) в окончания строки WindowsCRLF) и не мешайте мне с этим.

Поэтому вы действительно должны отключить core.safecrlf.

Более длинный ответ по адресу: https://stackoverflow.com/a/15471083/873282

...