Проблема с окончаниями строк Git на общем томе Windows с контейнером docker Unix

#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 не будут изменены. Я отмечу ваш пост как ответ. Спасибо за ваше время!