Как использовать .gitignore: Практическое введение с примерами

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

Без .gitignore ваш репозиторий может быстро заполняться временными файлами, логами и другими вещами, которые не должны находиться под контролем версий. Еще хуже, вы можете случайно поделиться конфиденциальной информацией.

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

Что такое файл .gitignore?

Файл .gitignore — это конфигурационный файл, используемый в Git для указания системе контроля версий, какие файлы или директории должны игнорироваться, когда изменения подготавливаются или коммитятся.

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

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

Вы новичок в Git и GitHub? Получите вводный курс по управлению версиями с помощью этого руководства по Git и GitHub.

Вот некоторые общие категории файлов и каталогов, которые вы должны рассмотреть для игнорирования:

  • Артефакты сборки: Файлы, генерируемые в процессе сборки, которые можно воссоздать из исходного кода, такие как:
    • dist/, build/ (Выходные данные сборки фронтенда и бэкенда)
    • target/ (Сборки на Java и других скомпилированных языках)
  • Зависимости: Системы управления пакетами создают каталоги для установленных библиотек, которые не должны отслеживаться:
    • node_modules/ (Node.js)
    • vendor/ (PHP, Composer)
    • .venv/, venv/ (Виртуальные окружения Python)
  • Системные файлы: Эти файлы автоматически генерируются операционной системой и не вносят вклад в проект:
    • .DS_Store (macOS)
    • Thumbs.db (Windows)
  • Файлы конфигурации IDE: Каждый разработчик может использовать разную среду разработки, поэтому их личные настройки не должны включаться в контроль версий:
    • .vscode/ (VS Code)
    • .idea/ (IDE JetBrains)
    • .project, .settings/ (Eclipse)
  • Логи и временные файлы: Логи, кэши и временные файлы должны игнорироваться, чтобы избежать ненужного беспорядка:
    • *.log, npm-debug.log*, yarn-debug.log*, yarn-error.log* (Логи из различных инструментов)
    • *.tmp, *.bak (Временные и резервные файлы)
    • .mypy_cache/, __pycache__/ (Кэши Python)
    • .ipynb_checkpoints/ (Контрольные точки Jupyter Notebook)
  • Файлы окружения и секреты: Чувствительные учетные данные и конфигурации, зависящие от окружения, никогда не должны коммититься:
    • .env, .env.local, .env.development, .env.production
    • secrets.json, config.json (Чувствительные файлы конфигурации)
  • Базы данных и файлы хранения: Эти файлы создаются локально и не должны включаться в систему контроля версий:
    • *.sqlite, *.sqlite3, *.db (файлы баз данных SQLite)
    • dump.rdb (дамп базы данных Redis)
  • Файлы CI/CD и покрытия: Отчеты о покрытии тестами и другие артефакты CI/CD должны игнорироваться:
    • coverage/, *.lcov (отчеты о покрытии кода)
    • .tox/, .pytest_cache/ (файлы тестирования Python)

Нужно установить Git? Следуйте нашему пошаговому руководствуe в этом уроке по установке Git чтобы настроить всё быстро.

Синтаксис .gitignore

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

Основной синтаксис

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

  • Конкретные файлы
  • Типы файлов
  • Каталоги

Файл также поддерживает комментарии, которые можно добавлять, начиная строку с #, а также пустые строки для улучшения читаемости.

Вот обзор основной структуры:

  • Игнорировать конкретный файл: Вы можете указать имя файла напрямую, чтобы игнорировать его.
secrets.txt
  • Игнорировать всю директорию: Добавив / в конце имени директории, вы можете игнорировать все внутри этой директории.
logs/
  • Игнорировать все файлы определенного типа: Шаблоны (*) могут использоваться для игнорирования всех файлов с определенным расширением.
*.py
  • Отрицание: Вы можете использовать ! для отрицания шаблона и явного отслеживания определенных файлов или директорий, которые иначе были бы проигнорированы.
*.txt # Ignores all .txt files !readme.txt # Except for readme.txt

Как создать и использовать файл .gitignore

Создание и использование .gitignore довольно просто. В этом разделе я пройдусь по шагам.

Создание файла .gitignore

Шаг 1: Перейдите в корень вашего репозитория. Файл .gitignore обычно располагается в корневом каталоге Git-проекта. Откройте терминал или командную строку и перейдите в корневой каталог вашего Git-репозитория:

cd /path/to/your/repo

Шаг 2: Создайте файл .gitignore. Находясь в корневом каталоге, создайте файл .gitignore с помощью любого текстового редактора или выполнив команду в терминале, такую как:

touch .gitignore

Шаг 3: Добавьте паттерны в файл. Откройте файл .gitignore в текстовом редакторе и добавьте необходимые паттерны для игнорирования файлов или директорий. Каждая строка представляет собой отдельный паттерн.

Вот пример файла .gitignore, который обычно используется в базовом проекте:

# Игнорировать node_modules и директории зависимостей node_modules/ vendor/ # Игнорировать артефакты сборки dist/ build/ *.log # Игнорировать файлы, сгенерированные системой .DS_Store Thumbs.db # Игнорировать файлы окружения и секретные файлы .env config.json

После того как вы добавили необходимые паттерны, сохраните файл. Git теперь будет автоматически игнорировать эти файлы при подготовке или коммите изменений.

Шаг 4: Зафиксируйте файл в репозитории. Важно зафиксировать файл .gitignore в репозитории, чтобы все участники использовали одни и те же правила игнорирования. Это обеспечивает согласованность в проекте для всех вовлеченных.

git add .gitignore git commit -m "Add .gitignore file" git push

После того как файл .gitignore будет зафиксирован, вы устанавливаете общие правила игнорирования для всей команды.

Хотите освоить отправку и получение в Git? Узнайте, как синхронизировать свою работу с удаленными репозиториями в этом учебнике по отправке и получению в Git.

Лучшие практики использования .gitignore

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

Используйте глобальный .gitignore

Для разработчиков, работающих над несколькими проектами, есть определенные файлы, которые вы можете захотеть исключить из каждого репозитория, независимо от типа проекта.

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

Чтобы настроить глобальный файл .gitignore:

  • Создайте файл .gitignore_global:
touch ~/.gitignore_global
  • Добавьте шаблоны для файлов, которые вы хотите игнорировать глобально, такие как:
.DS_Store *.log /.vscode/ /.idea/
  • Настройте Git для использования глобального .gitignore:
git config --global core.excludesfile ~/.gitignore_global

Используйте существующие шаблоны

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

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

Регулярно просматривайте .gitignore

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

Некоторые сценарии, в которых вам может понадобиться обновить файл .gitignore, включают:

  • Применение новых инструментов или библиотек, которые создают дополнительные файлы (например, переход на новую систему сборки).
  • Рефакторинг или реорганизация каталогов, что может привести к появлению новых файлов, которые следует исключить.
  • Удаление устаревших файлов или каталогов, которые больше не являются частью проекта.

Поиск и устранение проблем с .gitignore

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

Отслеживание файлов, которые уже были зафиксированы

Файл .gitignore не применяется ретроактивно к уже зафиксированным файлам.

Если вы добавите шаблон в .gitignore после того, как определенные файлы уже были зафиксированы, Git продолжит их отслеживать, даже если они соответствуют шаблону в файле .gitignore.

Чтобы прекратить отслеживание файлов, которые уже были зафиксированы, выполните следующие шаги:

  • Удалите файлы из отслеживания Git: Используйте команду git rm, чтобы удалить их из репозитория, сохранив при этом в рабочем каталоге.
git rm --cached <file_or_directory_name>
  • Зафиксируйте изменения: После удаления файлов из отслеживания Git зафиксируйте изменения, чтобы убедиться, что файлы больше не являются частью истории контроля версий.
git commit -m "Stop tracking ignored files"
  • Отправьте изменения в удаленный репозиторий: Наконец, отправьте изменения в удаленный репозиторий, чтобы убедиться, что файлы больше не отслеживаются.
git push

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

Убедитесь, что шаблоны работают 

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

Следуйте этим шагам, чтобы убедиться, что ваши шаблоны .gitignore работают правильно:

  • Проверьте статус ваших файлов: Используйте команду git status, чтобы увидеть, какие файлы отслеживаются Git. Это поможет вам проверить, все ли ваши игнорируемые файлы все еще перечислены.
git status
  • Убедитесь, что шаблон правильный: Пере проверьте синтаксис ваших .gitignore шаблонов, чтобы они были правильно отформатированы. Например:
    • Убедитесь, что вы используете правильный путь к директории (относительно корня репозитория).
    • Добавьте /, чтобы нацелиться на конкретные директории и предотвратить отслеживание всех файлов с похожими именами.
  • Обновите кэш: Если вы недавно обновили файл .gitignore, и изменения не применяются, Git, возможно, сохраняет предыдущий кэш. Чтобы обновить кэш, выполните следующую команду:
git rm -r --cached . git add . git commit -m "Refresh .gitignore"
  • Проверьте на наличие исключений: Иногда конкретный шаблон в .gitignore может быть переопределен более конкретным шаблоном в другом месте файла. Проверьте свои правила, чтобы убедиться, что нет конфликтующих шаблонов.

Ищете быстрый справочник по Git? Держите основные команды под рукой с этой шпаргалкой по Git.

Заключение

Файл .gitignore может показаться небольшим, но он играет огромную роль в поддержании вашего репозитория Git в чистоте и управляемости. Игнорируя ненужные файлы — такие как зависимости, артефакты сборки и файлы, созданные системой — вы обеспечиваете организацию и отсутствие беспорядка в вашем проекте.

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

Если вы хотите углубить свои навыки работы с Git, ознакомьтесь с Основами Git для структурированного пути обучения. Вы также можете изучить практические курсы, такие как Основы Git и Введение в концепции GitHub, чтобы создать прочное понимание управления версиями и рабочих процессов сотрудничества!

Source:
https://www.datacamp.com/tutorial/gitignore