.gitignore: почему важно игнорирование избыточных артефактов?
1 октября 2025 г.·165 views

🛠 .gitignore: почему важно игнорирование избыточных артефактов?

Салют,

Часто встречается, что команда разработки, в своих проектах не исключает артефакты, которые не участвуют в сборках, но при этом хранятся в ветках проекта GitSCM, да и с историей изменений.

Рассмотрим детальнее:

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

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

1. Файлы, образующиеся в процессе и результате компиляции проекта. Как правило, для них отводятся каталоги с именами вроде target/, output/, release/, debug/

2. Файлы, генерируемые тестовым фреймворком, профилировщиком, дебаггером и т.п.

3. Сгенерированная из кода документация — только если не генерируется в отдельный репозиторий, через который потом развертывается сайт с документацией (пример gpages)

4. Файлы, создаваемые при выполнении кода: журналы (*.log), результаты работы и т.п.

5. Временные файлы текстового редактора или среды разработки (*~)

6. Файлы, создаваемые операционной системой, например thumbs.db, .DS_Store

Пример:

- В C# хранится вывод, чтобы можно было легко собрать проект, но можно настроить, что запускалась при сборке, однако это возможно не для всех скриптов

- Хранить или не хранить composer.lock - нужно понимать его работу

- Нельзя заигнорить .idea/, потому что отвалятся настройки проекта, либо нельзя просто взять и оставить .idea/, потому что личные пути попадут ко всем и наплодят конфликтов.

Ремарка:

Для хранения есть классная возможность, как использование packages в виде артефакта (рассмотрим далее). Если можете использовать NuGet, Composer, CPAN, Lein, Maven, то бинарные зависимости должны быть там.

Итого: рекомендую исключать не только то, что не используется, но и что может содержать в себе какую-то историю важных изменений, которые позволят ресерчить проект.

Реко: для создания .gitignore удобно использовать генераторы шаблонов, типа этого.

#toolchain #reco #specialty

#toolchain#reco#specialty
Открыть в Telegram