Изменить: полностью переписано для релевантности
Я пытаюсь получить 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.