#git #eol #gitattributes
#git #eol #gitattributes
Вопрос:
Я отключил автоматическое преобразование EOL, нажав следующие атрибуты .gitattributes в master:
# disable automatic eol conversions
* text=false
После этого я загрузил некоторые файлы в Linux и перенес изменения с компьютера Windows только для того, чтобы обнаружить, что окончания строк файлов, которые не были изменены, были преобразованы из n в r n.
Я пытался:
- удаление репозитория и выполнение клонирования git (в Windows)
- запускаем следующее в Linux и нажимаем снова:
git rm --cached -r . git add -A
- редактирование всех файлов и их отправка
Замена .gitattributes невозможна, потому что, когда репозиторий клонируется действиями GitHub, окончания строк также должны быть оставлены нетронутыми.
Комментарии:
1. Я не уверен, что вы подразумеваете под «окончаниями строк файлов, которые не были изменены, были [изменены]». Но обратите внимание, что эти правила никогда не затрагивают ни один существующий коммит ; преобразования EOL происходят только при (а) извлечении существующего коммита (Git будет подчиняться любым переопределенным правилам, например, из
.git/info/attributes
, в это время) или (б)git add
редактировании файлов при подготовке к новому коммиту (Git снова подчинитсяправила, действующие во время добавления). Сложность здесь в том, что файлы, которые вы видите и с которыми работаете в своем рабочем дереве, могут быть скорректированы во время шага (a).2. Я имею в виду, что даже после того, как я удалил и клонировал репозиторий, преобразования EOL все еще выполнялись для файлов, которые не изменились после того, как я зафиксировал .gitignore .
Ответ №1:
Мне удалось отключить преобразования EOL для всех файлов, добавив следующую строку в .gitignore:
* binary
Я все еще не понимаю, почему * text=false
этого было недостаточно, но, по крайней мере, сейчас это работает.
Комментарии:
1.
text=false
Настройка такая же, как если бы вообще ничего не устанавливалось. Чтобы объявить, что файл не является текстовым, вам нужно-text
. (Мне не нравится это конкретное усложнение.gitattributes
значений — я просто изначально ошибся, это-text
не!text
так.)binary
Макрос эквивалентен-text -diff -merge
.