#windows #git #docker #unix #line-endings
#Windows #git #docker #unix #окончания строк
Вопрос:
Я работаю над Windows и использую контейнеры docker CentOS для своей разработки. У меня также есть общий том между моими контейнерами и локальной папкой.
Проблема в том, что при клонировании репозитория из Windows в общий том или из контейнера в общий том a git status
не возвращает то же самое, когда оно выполняется в контейнере и на локальном компьютере. Я ожидаю, что это будет то же самое, и безуспешно пробовал разные конфигурации:
git config --global core.autocrlf true/input/false
на локальном компьютере и в контейнереgit config --global core.crlf true/false/auto
на локальном компьютере и в контейнереgit config --global core.eol lf
…
У кого-нибудь есть правильная конфигурация Git, чтобы получить идентичный git status
файл из контейнера и на локальном компьютере без изменения атрибутов .gitattributes?
Комментарии:
1. Совместное использование репозитория в разных операционных системах обязательно потребует
git status
повторного чтения каждого файла, даже если вы исправите эту проблему.
Ответ №1:
Способ настройки окончаний строк:
В Linux:
git config --global core.autocrlf input
В Windows:
git config --global core.autocrlf true
Вы также можете задать конфигурации, зависящие от репозитория:
cd /path/to/repo
git config core.autocrtlf <value>
В вашей ситуации звучит так, что если вы установите git config --global core.autocrlf input
в своих контейнерах CentOS и git config --global core.autocrlf true
для своего компьютера с Windows, у вас не должно возникнуть проблем.
Комментарии:
1. Я установил параметры, но я все равно получаю разные результаты после:
git clone amp;amp; git status
. Я предполагаю, что «красные файлы» — это файлы с неправильными окончаниями строк. Поэтому я не понимаю, почему они изменены. Возможно, неправильная конфигурация? :/2. Вы установили параметры точно так, как я предлагаю?
3. Да, точно. Чтобы быть уверенным, я удалил все, что могло помешать как конфигурации, так и вашей. Затем я клонировал репозиторий в контейнер CentOS и состояние git, все хорошо. Вернемся к Windows,
git status
в общем томе с контейнером и некоторые файлы красные. Это двоичные файлы, поэтому я предполагаю, что они были изменены git, но я ожидаю, что это не так. Одним из способов было бы изменить атрибуты .gitattributes, но я не могу.4. О! Это двоичные файлы! Это все меняет. Вы не упомянули об этом в своем вопросе. Двоичные файлы зависят от операционной системы. Так что это не проблема с окончанием строки, и вы ничего не можете с этим поделать в настройках Git.
5. Таким образом, из справочной страницы git-config: «К сожалению, желаемый эффект очистки текстовых файлов со смешанными окончаниями строк и нежелательный эффект повреждения двоичных файлов невозможно отличить», так что да, я буду работать с WSL, пока атрибуты .gitattributes не будут изменены. Я отмечу ваш пост как ответ. Спасибо за ваше время!