Я пытаюсь заставить git не изменять окончание строки для любой операции. К сожалению, кажется, что это не так. Я сократил его до следующего тестового примера, в котором есть столько различных механизмов для отключения этого поведения, сколько я смог найти.
- Начните с двух машин (компьютер Windows = A, компьютер Linux = B)
- На обеих машинах:
git config --global core.autocrlf false - На обеих машинах:
git config --global core.eol crlf(на всякий случай)
- Создайте новый репозиторий на A. Из пустой папки:
git init --shared(затем отобразите созданный.gitкаталог)- Сделайте новый файл
.gitignoreв репозитории - Создайте новый файл
.gitattributesв репозитории с единственной строкой:* -text git add ., затемgit commit -m "initial commit"обойти, например, this .git branch master_recv- Добавить пульты
- Создайте новый файл
document.txtв репозитории, содержащий CRLF - Фиксация:,
git add -Aзатемgit commit -m "<something>" - Обратите внимание, что A по-
document.txtпрежнему содержит CRLF (и удаление его и сброс с помощью--hardвозвращает версию, все еще с CRLF)
- Подключите весь каталог к компьютеру B
- Добавить новый файл,
new fileсодержащий CRLF - Фиксация:,
git add -Aзатемgit commit -m "<something>" - Обратите внимание, что B
document.txtи B всеnew fileеще содержат CRLF
- Потяните мастера B к A:
git pull <remote> master:master_recv - A
document.txtизменилось на LF. Добавленный файлnew fileтакже содержит LF.
Проблема не возникает, если B - машина Windows.


core.autocrlfвсегда был ложным? Похоже,\nв вашем репозитории уже есть окончания строк? В вашем репозитории нет настроек для изменения в вашем рабочем каталоге.\n\r\n