Что такое файл .gitignore и как его настроить? – CloudSavvy ИТ

Логотип Git

Файл .gitignore – это текстовый файл, помещенный в ваш репозиторий git, который сообщает git не отслеживать определенные файлы и папки, которые вы не хотите загружать в ваш главный репозиторий. У него много применений, и вам почти всегда нужно будет его настраивать, если вы настраиваете новое репо.

В чем смысл .gitignore?

В большинстве проектов есть разница между кодом / конфигурацией и сгенерированные файлы из этого кода или конфигурации. Последнее обычно бесполезно, и его можно игнорировать.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Обычно вы хотите, чтобы код и конфигурация отслеживались только через git. Это связано с тем, что сгенерированные файлы эфемерны, и если вы удалите их, вы можете просто восстановить их снова. Часто нет смысла загружать их, поскольку они просто усложнят ситуацию и вызовут ненужные конфликты слияния.

Это широкое определение, поэтому давайте рассмотрим пример. В проектах Node JS есть папка с именем node_modules, которая содержит все внешние пакеты, которые необходимо запустить вашему коду. Вы можете удалить этот каталог и полностью перестроить его, запустив команду npm install, которая использует конфигурацию package.json для поиска пакетов.

Так какой смысл иметь папку node_modules в Git? На самом деле его нет, так как он более сложный, может вызвать проблемы и даже во многих случаях может значительно увеличить размер репозитория Git.

Если вы проигнорируете весь каталог, все ваши коллеги по-прежнему смогут сгенерировать свою локальную копию из файла package.json. Таким образом, вместо этого в Git следует отслеживать только package.json. Большинство вещей, которые добавляются в .gitignore, следуют этому шаблону. Артефакты сборки, такие как папка ./bin/, не фиксируются, поскольку они являются прямым результатом самого кода.

Для удобства в .gitignore можно добавить и другие вещи. MacOS генерирует системные файлы с именем .DS_store, которые вы всегда можете игнорировать. Возможно, вы храните ключи API в .env /, которые не хотите отслеживать в системе управления версиями, вы тоже можете их добавить. Кеши, журналы и другой вывод обычно можно игнорировать.

Использование .gitignore

Вам нужно будет создать файл с именем .gitignore без расширений в корне вашего проекта, где находится ваш каталог .git. Вы можете сделать это из своего файлового браузера или из командной строки с помощью любого текстового редактора CLI:

нано .gitignore

Вы можете настроить это разными способами, но основные инструменты, которые у вас есть:

  • * подстановочные знаки, которые соответствуют любому тексту и могут использоваться для соответствия любому каталогу или любому файлу независимо от расширения.
  • !, который работает как своего рода белый список, который отменяет ранее исключенный файл. Основная проблема заключается в том, что он добавляет файл в белый список только в том случае, если он был напрямую excluded и не будет работать для файлов в каталогах, которые были полностью исключены.
  • **, который рекурсивно сопоставляет что-либо с каталогами. Например, ** / *. Json будет соответствовать любому файлу JSON независимо от того, где он находится, а src / ** будет рекурсивно соответствовать каждому файлу в папке. Это полезно, если вы хотите внести в белый список, а не игнорировать весь каталог.

Например, Node JS gitignore может выглядеть следующим образом:

node_modules / build / npm-debug.log .env .env.test .env.production .DS_Store .npm .eslintcache logs / * .log npm-debug.log *

Добавление файлов в белый список с помощью! может быть очень полезным для многих конфигураций. Например, в одном из моих проектов у меня был инструмент steamcmd, который загружает зависимости для игровых серверов из Steam. Этот инструмент упакован в один переносимый исполняемый файл, но он производит огромное количество мусора, который я не хочу отслеживать в Git.

Решением было игнорировать все в папке, но занести исполняемый файл в белый список. Это будет работать для любого переносимого исполняемого файла, который расширяется таким образом или создает в каталоге ненужный мусор.

Проект / steamcmd / **! Project / steamcmd / steamcmd.exe

gitignore также использует некоторые другие Unix шарик шаблоны для сопоставления строк, например вопросительный знак для сопоставления одного символа или [a-z] который будет соответствовать наборам символов.

Вы также можете написать несколько файлов .gitignore, которые могут соответствовать файлам относительно самих себя. На самом деле это не слишком полезно, поскольку вы можете просто включить правила в корневой файл, что легче отслеживать, но в некоторых случаях это может помочь с повторением кода. Однако обходной путь заключается в использовании наборов символов для сопоставления нескольких каталогов. Например, сопоставление каталогов в верхнем и нижнем регистре с помощью набора:

# Результаты сборки
[Dd]ebug /
[Dd]ebugPublic /
[Rr]elease /
[Rr]eleases /

Если у вас возникли проблемы с конфигурацией .gitignore, вы можете отладить ее с помощью команды check-ignore Git:

git check-ignore -v testfile.json

Глобальный .gitignore

Git также имеет глобальную настройку для .gitignore, но в большинстве случаев ее не следует использовать. Это связано с тем, что глобальный .gitignore на вашем компьютере не применяется к вашим коллегам, а только к коммитам, сделанным с помощью вашего экземпляра Git.

Если вы все равно хотите установить его, вы можете сделать это с помощью следующей команды:

git config –global core.excludesfile ~ / .globalignore

Принудительная фиксация или сохранение игнорируемых файлов

Принудительная фиксация, как правило, плохая идея – вам, вероятно, следует добавить белый список для этого конкретного файла, потому что после фиксации обновления этого файла не будут отслеживаться. Но если вы хотите что-то зафиксировать вручную, вы можете запустить git add с параметром –force:

git add -f debug.log

Точно так же git stash также может хранить локальные изменения в игнорируемых файлах, что на самом деле может быть полезно, поскольку не повлияет на удаленное репо:

git stash – все

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *