Изменить: полностью переписано для релевантности
Я пытаюсь получить git, чтобы не менять никаких окончаний строк для любой операции. К сожалению, похоже, что это не имеет значения. Я сократил его до следующего тестового примера, в котором так много разных механизмов для отключения такого поведения, как я мог найти. Изменить: добавлено большинство точных команд.
- Начните с двух компьютеров (компьютер Windows = A, Linux computer = 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 - Commit:
git add -A, затемgit commit -m "<something>" - Обратите внимание, что A
document.txtвсе еще содержит CRLF (и удаление его и сброс с помощью--hardвозвращает версию с CRLF)
- SCP весь каталог для компьютера B
- Добавить новый файл
new file, содержащий CRLF - Commit:
git add -A, затемgit commit -m "<something>" - Обратите внимание, что B
document.txtи Bnew fileоба по-прежнему содержат CRLF
- Потяните B-мастер в A:
git pull <remote> master:master_recv - A
document.txtизменился на LF. Добавленный файлnew fileтакже содержит LF.
Проблема не возникает, если B является машиной Windows.


