Git, добавление файлов в репозиторий дает фатальную ошибку для LF - >CRLF

Я новичок в 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 к false, кажется, решает проблему, но я читал на многих сообщениях, чтобы не устанавливать этот параметр в false.

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

4 ответов


доверяйте редакторам кода для управления окончаниями строк. Автоматический crlf должен быть false. Не позволяйте управлять источником умничать. Если вам не нужен инструмент управления версиями для изменения окончаний строк, не делайте этого. Будет больно.

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

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

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

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

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

не стоит этого делать. Хранить как есть.


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

[core]
    autocrlf = false

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


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

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

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

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


автоопределение форматов git работает довольно хорошо. Следовательно,core.autocrlf=true Это действительно хорошая идея для Windows.

слова git config --global core.safecrlf=false говорит git: Эй, пожалуйста, преобразуйте мой неправильно линейные окончания (только LF) для Windows line endings (CRLF) и не беспокойте меня этим.

таким образом, вы должны действительно запретить core.safecrlf.

более длинный ответ на:https://stackoverflow.com/a/15471083/873282