.gitignore - це файл, який використовується в системі контролю версій Git для вказівки файлів та директорій, які повинні бути ігноровані Git. Це означає, що файли та директорії, зазначені у .gitignore, не будуть додані до індексу Git, не будуть відслідковуватися і не будуть потрапляти у коміти.
Навіщо потрібен .gitignore?
Файл .gitignore допомагає уникнути включення до репозиторія файлів, які не мають відношення до коду або не повинні бути загальнодоступними. Це можуть бути:
- Файли конфігурації середовища розробки.
- Лог-файли.
- Згенеровані файли (наприклад, результати компіляції).
- Файли тимчасового характеру (кеш, тимчасові файли).
- Чутливі дані (наприклад, паролі або ключі доступу).
Приклад використання .gitignore
Створення файлу .gitignore:
У кореневій директорії вашого репозиторія створіть файл з назвою .gitignore.
Додавання файлів і директорій до .gitignore:
У файл .gitignore додавайте шаблони для файлів та директорій, які повинні бути ігноровані. Наприклад:
# Ігнорувати всі файли .DS_Store
.DS_Store
# Ігнорувати файли журналів
*.log
# Ігнорувати всі файли в директорії temp/
temp/
# Ігнорувати файли конфігурації IDE
.idea/
*.iml
Після додавання записів до .gitignore, переконайтеся, що ці файли ще не були додані до індексу. Якщо вони вже були додані, видаліть їх з індексу за допомогою команди git rm --cached <filename> і зробіть коміт.
Як працює .gitignore?
- Кожен рядок у .gitignore представляє шаблон для файлів, які повинні бути ігноровані.
- Шаблони можуть бути простими назвами файлів або містити символи підстановки (wildcards) для більшої гнучкості.
- Коментарі можуть бути додані за допомогою символу #.
- .gitignore може бути розташований у будь-якій директорії репозиторія, і його дія буде обмежена цією директорією та піддиректоріями. Це доречі, іноді прям дуже зручно.
# Ignore bundler config
/.bundle
# Ignore the default SQLite database
/db/*.sqlite3
/db/*.sqlite3-journal
/db/*.sqlite3-shm
/db/*.sqlite3-wal
# Ignore the default PostgreSQL and MySQL database files
/db/*.pg
/db/*.pg-journal
/db/*.mysql
/db/*.mysql-journal
# Ignore all logfiles and tempfiles
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep
# Ignore uploaded files in development
/storage/*
!/storage/.keep
# Ignore application secret key
/config/master.key
# Ignore pidfiles, tempfiles, and byebug command history
/tmp
/tmp/pids
/tmp/cache
/tmp/sockets
/.byebug_history
# Ignore dotenv environment variable files
.env
.env.*
# Ignore node_modules
/node_modules
/yarn-error.log
# Ignore precompiled assets
/public/assets
/public/packs
/public/packs-test
/public/packs-dev
# Ignore compiled files
/public/assets
/public/packs
/public/packs-test
/public/packs-dev
/public/packs/css
/public/packs/js
/public/packs/images
# Ignore coverage results generated by SimpleCov
/coverage/
# Ignore minitest and rspec result files
/test/tmp
/test/version_cache
/spec/tmp
/spec/fixtures/files
/spec/examples.txt
# Ignore rubocop cache
/.rubocop-https*
/.rubocop_cache
# Ignore Capybara screenshots
/tmp/capybara/
# Ignore Redis stores
/tmp/redis/
# Ignore .DS_Store
.DS_Store
# Ignore backups
/backup/
# Ignore ActiveStorage uploaded files in development
/storage/*
!/storage/.keep
Зазвичай файл .gitignore наповнюється додатковими записами під час імплементації нового функціоналу проєкту. Наприклад, нова бібліотека створює тимчасові файли кешу на локальній машині - тож ми додаємо їх (або теку) до списку ігнорування. Перед комітом, ви побачите зайві файли і з легкістю ідентифікуєте, що саме треба додати до .gitignore.