Я намагаюся змусити git не змінювати будь-які закінчення рядків для будь-якої операції. На жаль, здається, це робиться незважаючи ні на що. Я звів його до наступного тесту, який містить стільки різних механізмів для відключення такої поведінки, скільки я міг знайти.
- Почніть з двох машин (комп'ютер з Windows = A, комп'ютер з Linux = B)
- На обох машинах:
git config --global core.autocrlf false - На обох машинах:
git config --global core.eol crlf(про всяк випадок)
- Створіть нове сховище на А. З порожньої папки:
git init --shared(потім показати створений.gitкаталог)- Створіть новий файл
.gitignoreу сховищі - Створіть новий файл
.gitattributesу сховищі одним рядком:* -text git add ., а потімgit commit -m "initial commit"обійти, наприклад, це .git branch master_recv- Додайте пульти дистанційного керування
- Створіть новий файл
document.txtу сховищі, що містить CRLF - Здійснити:,
git add -Aтодіgit commit -m "<something>" - Зверніть увагу, що A
document.txtвсе ще містить CRLF (і видалення та скидання з--hardповерненням версії, що все ще є CRLF)
- SCP весь каталог на комп'ютер B
- Додайте новий файл,
new fileщо містить CRLF - Здійснити:,
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.


core.autocrlfзавжди був помилковим? Здається, у вас вже є\nзакінчення рядків у вашому сховищі? У вашому сховищі немає налаштувань, які можна змінити у вашому робочому каталозі.\n\r\n