~/tools/git/gitattributes-generator
Git.gitattributes Generator
Сгенерировать .gitattributes файл под нужный стек.
Как это работает
Файл .gitattributes куда менее известен, чем .gitignore, но решает не менее реальные проблемы: разработчик на Windows коммитит файлы с CRLF окончаниями строк, разработчик на Mac с LF, и весь diff в Pull Request превращается в нечитаемую простыню из-за одних только изменений line endings. Gitattributes generator online собирает готовый файл под частые сценарии одним нажатием чекбоксов.
Опция нормализации line endings приводит все текстовые файлы к единому LF при коммите независимо от операционной системы разработчика, это самая частая причина, по которой вообще заводят .gitattributes в первую очередь.
Дополнительные опции покрывают более специфичные задачи: настройка Git LFS для больших бинарных файлов вроде изображений, исключение папок вроде vendor или dist из статистики языков репозитория на GitHub, и отключение diff для бинарных lock файлов, которые все равно бессмысленно сравнивать построчно.
Частые вопросы
Изменит ли .gitattributes уже существующие файлы в репозитории сразу после добавления?
Нет, правила применяются к файлам при следующем чекауте или коммите, для уже существующих файлов в репозитории может понадобиться дополнительная команда вроде git add минус minus renormalize, чтобы применить новые правила задним числом.
Что делает text равно auto eol равно lf на практике?
Эта директива говорит git автоматически определять текстовые файлы и всегда хранить их в репозитории с LF окончаниями строк, при этом на выходе в рабочую директорию файлы могут конвертироваться под настройки конкретной операционной системы.
Обязательно ли использовать Git LFS для всех изображений в проекте?
Нет, это скорее рекомендация для репозиториев с большим количеством крупных бинарных файлов, для небольшого числа маленьких иконок обычный git отлично справляется и без LFS.
Что значит linguist-vendored для папки в .gitattributes?
Эта директива говорит GitHub не учитывать содержимое папки при подсчете статистики языков программирования репозитория, полезно для папок с сторонним кодом или сгенерированными файлами, которые искажают реальную картину используемых языков.