Подтвердить что ты не робот

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

Я новичок в git, и мне нужна помощь. Я использую msysgit для окон.

Когда я выполняю команду 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. Если я открою файл и вырезаю/вставляю содержимое, я получаю сообщение об ошибке в следующем файле и т.д.

Любая помощь будет очень оценена.

Edit

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

Ответ 2

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

[core]
    autocrlf = false

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

Ответ 3

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

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

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

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

Ответ 4

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

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

Следовательно, вы действительно должны отключить core.safecrlf.

Более длинный ответ: fooobar.com/info/13578/...