Я прочитал много разных вопросов и ответов по переполнению стека, а также git документацию о том, как работает параметр core.autocrlf .
Это мое понимание того, что я прочитал:
Клиенты Unix и Mac OSX (pre-OSX использует CR) используют LF-окончания строк.
Клиенты Windows используют окончания строки CRLF.
Когда для core.autocrlf на клиенте установлено значение true, репозиторий git всегда сохраняет файлы в формате окончания строки LF, а окончания строк в файлах на клиенте конвертируются туда-обратно при извлечении / фиксации для клиентов (т. Е. Windows), которые используют не -LF окончания строк, независимо от формата файлов окончаний строк на клиенте (это не согласуется с определением Тима Клема - см. Обновление ниже).
Вот матрица, которая пытается документировать то же самое для параметров «input» и «false» в файле core.autocrlf с вопросительными знаками, где я не уверен в поведении преобразования конца строки.
Мои вопросы:
- Какими должны быть знаки вопроса?
- Правильна ли эта матрица для «не вопросительных знаков»?
Я обновлю вопросительные знаки из ответов, поскольку консенсус, кажется, сформирован.
значение core.autocrlf верный ввод ложный -------------------------------------------------- -------- совершать | перерабатывать ? ? новый | в LF (преобразовать в LF?) (без преобразования?) совершать | Перевести в ? нет существующий | LF (конвертировать в LF?) Конвертация оформить заказ | Перевести в ? нет существующий | CRLF (без конвертации?) Конвертация
Я на самом деле не ищу мнения о плюсах и минусах различных настроек. Я просто ищу данные, которые проясняют, как ожидать, что git будет работать с каждой из трех настроек.
-
Обновление 17.04.2012 : После прочтения статьи Тима Клема, связанной JJD в комментариях, я изменил некоторые значения в «неизвестных» значениях в приведенной выше таблице, а также изменил «checkout существующие | true для преобразования». в CRLF вместо конвертации в клиента ". Вот определения, которые он дает, которые более понятны, чем все, что я видел в других местах:
core.autocrlf = false
Это значение по умолчанию, но большинству людей рекомендуется изменить это немедленно. Результатом использования false является то, что Git никогда не связывается с окончаниями строк в вашем файле. Вы можете проверить файлы с помощью LF, CRLF или CR, или какой-то случайной комбинации этих трех, и Git это не волнует. Это может затруднить чтение различий и затруднить их объединение. Большинство людей, работающих в мире Unix / Linux, используют это значение, потому что у них нет проблем с CRLF, и им не нужно, чтобы Git выполнял дополнительную работу всякий раз, когда файлы записываются в базу данных объектов или записываются в рабочий каталог.
core.autocrlf = true
Это означает, что Git обработает все текстовые файлы и удостоверится, что CRLF заменяется на LF при записи этого файла в базу данных объектов и превратит все LF обратно в CRLF при записи в рабочий каталог. Это рекомендуемый параметр в Windows, поскольку он гарантирует, что ваш репозиторий можно использовать на других платформах, сохраняя CRLF в вашем рабочем каталоге.
core.autocrlf = вход
Это означает, что Git обработает все текстовые файлы и убедится, что CRLF заменяется на LF при записи этого файла в объектную базу данных. Это не будет, однако, делать обратное. Когда вы читаете файлы обратно из базы данных объектов и записываете их в рабочий каталог, они все равно будут иметь LF для обозначения конца строки. Этот параметр обычно используется в Unix / Linux / OS X для предотвращения записи CRLF в репозиторий. Идея заключалась в том, что если вы вставили код из веб-браузера и случайно поместили CRLF в один из ваших файлов, Git удостоверится, что они будут заменены на LF при записи в базу данных объектов.
Статья Тима отличная, единственное, о чем я могу подумать, что она отсутствует, это то, что он предполагает, что репозиторий имеет формат LF, что не всегда верно, особенно для проектов только для Windows.
Сравнение статьи Тима с ответом jmlane, получившим наибольшее количество голосов на сегодняшний день, показывает идеальное согласие с истинными и исходными настройками и несогласие с ложными настройками.
autocrlf
ложь кажется намного проще;) stackoverflow.com/questions/2333424/…