#windows #git #macos #gitattributes #end-of-line
#Windows #git #macos #gitattributes #конец строки
Вопрос:
В моем проекте я использую компьютеры с разными ОС, один — Mac, второй — с Windows. Когда я использую git, каждое изменение отображается как изменение всего документа. Причина в разном конце строки в этих двух ОС. Я прочитал это https://help.github.com/articles/dealing-with-line-endings / и создал .gitattributes
файл в корневой папке, но проблема все еще существует. Это мой .gitattributes
файл:
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto
# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.css text
*.html text
*.js text
# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
Я понятия не имею, почему это не работает, потому что раньше я пробовал много конфигураций этого файла.
Комментарии:
1. Вы пробовали этот
git config core.autocrlf
вариант? AFAIK это предпочтительнее. У вас есть какие-либо проблемы с этим?2. Да, я пробую это на обоих компьютерах, но это не работает.
Ответ №1:
Файл .gitattributes должен быть добавлен при первом коммите. Если вы добавите в него несколько коммитов, вам нужно явно нормализовать все существующие файлы.
$ rm .git/index # Remove the index to force Git to
$ git reset # re-scan the working directory
$ git status # Show files that will be normalized
$ git add -u
$ git commit -m "Introduce end-of-line normalization"
Ответ №2:
Если файл .gitattributes не был добавлен при первом коммите, для локального применения атрибутов необходимо выполнить следующее:
-
Перейдите в корень репозитория
-
Проверьте статус:
состояние git
-
Если он говорит «ничего не фиксировать, рабочее дерево чистое», выполните:
git rm —cached -r .
сброс git —жесткий
Ответ основан на https://dev.to/deadlybyte/please-add-gitattributes-to-your-git-repository-1jld
Комментарии:
1. Интересно… После запуска
git add --renormalize .
файлы с измененным EOL были перечисленыgit status
, и я мог зафиксировать изменение, но на самом деле у них все еще был исходный EOL (проверенный шестнадцатеричным представлением). Команды в п. 3. были необходимы для того, чтобы EOL действительно изменились на настройки, указанные в .gitattributes . Спасибо!