Игнорирование файлов — Введение в Git
В процессе работы над любым проектом в директории с кодом создаются файлы, которые не являются частью исходного кода. Все эти файлы можно условно разделить на несколько групп:
- Инструментарий
- Служебные файлы, добавляемые операционной системой — например, .DS_Store в MacOS
- Конфигурационные и временные файлы редакторов — например, .idea или .vscode
- Логи — в них содержится полезная информация для отладки, которая собирается во время запуска и работы приложения
- Кеши — файлы, которые нужны для ускорения разных процессов
- Результаты сборки проекта — например, после компиляции или сборки фронтенда
- Зависимости, которые устанавливаются во время разработки — например, node_modules или vendor
- Результаты выполнения тестов — например, информация о покрытии кода тестами
Все это в обычной ситуации не должно попадать в репозиторий. В этом уроке вы узнаете, как проигнорировать эти файлы.
Как правило, эти файлы не несут никакой пользы с точки зрения исходного кода. Они создаются:
- Автоматически (кеши, логи)
- По запросу (например, скачиваются зависимости или собирается проект)
Главная проблема с этими файлами в их постоянном изменении — особенно при очень больших размерах проекта. Если добавлять их в репозиторий, то практически в каждом коммите будут не только изменения исходного кода, но и пачка изменений в этих файлах. Читать историю таких коммитов крайне сложно.
Git позволяет гибко настраивать игнорирование определенных файлов и директорий. Делается это с помощью файла .gitignore, который нужно создать в корне проекта. В этот файл с помощью текстового редактора добавляются имена файлов и директорий, которые надо игнорировать:
# В этом файле можно оставлять комментарии # Имя файла .gitignore # Файл нужно создать самостоятельно # Каждая строчка — это шаблон, по которому происходит игнорирование # Игнорируем файл в любой директории проекта access.log # Игнорируем директорию в любой директории проекта node_modules/ # Игнорируем каталог в корне рабочей директории /coverage/ # Игнорируем все файлы с расширением sqlite3 в директории db # При этом не игнорируются такие же файлы внутри любого вложенного каталога в db # Например, /db/something/lala.sqlite3 /db/*.sqlite3 # Игнорировать все .txt файлы в каталоге doc/ на всех уровнях вложенности doc/**/*.txtGit поддерживает игнорирование файлов, но сам его не настраивает. Для игнорирования файлов и директорий, программист должен создать файл .gitignore в корне проекта и добавить его в репозиторий. Пример вы можете посмотреть здесь .
Продолжим работать с .gitignore:
touch .gitignore # Добавляем в файл правила игнорирования по примеру выше git add .gitignore git commit -m 'update gitignore'Как только .gitignore создан и в него добавлен какой-то файл или директория, игнорирование заработает автоматически. Все новые файлы, попадающие под игнорирование, не отобразятся в выводе команды git status .
Иногда бывает такое, что программист случайно уже добавил в репозиторий файл, который нужно проигнорировать. В этой ситуации недостаточно обновить правила игнорирования. Дополнительно придется удалить файл или директорию из Git с помощью git rm и закоммитить.
Самостоятельная работа
- Добавьте файл .gitignore в проект
- Добавьте файл INFO.md в список игнорируемых файлов
- Удалите файл INFO.md из репозитория
- Создайте файл INFO.md и убедитесь в том, что git status его не отображает
- Залейте изменения на GitHub
Дополнительные материалы
- Коллекция полезных gitignore для всех ситуаций
- Инструкция от Atlassian по gitignore

Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Правильные способы исключения файлов в Git
Иногда встречаю в файле .gitignore то, чего там быть никак не должно. Например, папка .idea , в которой лежат конфиги известных IDE от JetBrains. Это часть вашего рабочего окружения и она никаким боком не относится к проекту и репозиторию. Если над проектом работает несколько человек и каждый из них добавит конфиги своего окружения в .gitignore, то он превратится в нечитаемую помойку.
В этом топике я расскажу о правильных способах исключения файлов и о том когда какой способ использовать.
Исключение для репозитория
Когда у вас есть файлы, которые специфичны для данного проекта и для вашего рабочего окружения(например, логи, third-party утилита) используйте .git/info/exclude . Этот файл не коммитуется и остается только в локальном репозитории.
Исключение для компьютера
Когда у вас несколько проектов и везде создается что-либо, что вы не хотите коммитить(например, *.swp файлы Vim) используйте ~/.gitconfig . Вышеприведённый пример папки .idea, которая создается для каждого проекта как раз подходит сюда. Создайте файл .gitexcludes и выполните:
git config --global core.excludesfile ~/.gitexcludesили вручную добавьте в ~/.gitconfig :
[core] excludesfile = ~/.gitexcludesСразу после сохранения ~/.gitconfig вы не должны видеть указанные файлы/папки в списке Untracked files.
Я люблю Git, но и он порой непоследователен в мелочах. Обращаю ваше внимание на то, что в первом случае мы редактируем файл .git/info/exclude (без s на конце), а во втором используем опцию excludeSfile (c s в середине). Не потеряйте время из-за возможной опечатки.
Работа с Git в большинстве случаев означает работу в команде, поэтому не усложняйте жизнь тем, кто будет работать с вами деталями вашего рабочего окружения. Хороших коммитов! 🙂
Как сделать правильный файл .gitignore?
Доброго времени суток! Как правильно создать в уже имеющимся проекте GH файл .gitignore для .pdf и .xlsx файлов? Спасибо!
- Вопрос задан более трёх лет назад
- 143 просмотра
3 комментария
Простой 3 комментария
Сергей Горностаев @sergey-gornostaev
Элементарно. Что у вас не получается? И при чём здесь Python?
Глеб Лукашонок @Bombesko Автор вопросаСергей Горностаев, какое должно быть название? в какую конкретно папку положить файл? в главную проекта или в .git? какое расширение должно быть? и как правильно прописать исключения?
.zip
.log
.pdf
.xls
так?Пропуск файлов
Вы можете настроить Git для игнорирования файлов, которые вы не хотите возвращать в GitHub.
Platform navigation
Настройка игнорируемых файлов для одного репозитория
Вы можете создать .gitignore файл в корневом каталоге репозитория, чтобы сообщить Git, какие файлы и каталоги игнорировать при фиксации. Чтобы предоставить общий доступ к правилам игнорировать другим пользователям, которые клонировали репозиторий, зафиксируйте .gitignore файл в репозитории.
GitHub поддерживает официальный список рекомендуемых .gitignore файлов для многих популярных операционных систем, сред и языков в общедоступный репозиторий github/gitignore. Вы также можете использовать gitignore.io для создания .gitignore файла для операционной системы, языка программирования или интегрированной среды разработки. Дополнительные сведения см. в разделе github/gitignore и на сайте gitignore.io.
- Откройте Терминал Терминал GIT Bash .
- Перейдите к расположению репозитория Git.
- .gitignore Создайте файл для репозитория.
touch .gitignoreПример .gitignore файла см. в разделе «Некоторые распространенные конфигурации gitignore» в репозитории Octocat.
Если вы хотите игнорировать файл, который уже был отправлен в репозиторий, необходимо отменить отслеживание файла перед тем, как добавлять правило для игнорирования файла. В терминале распакуйте файл.
git rm --cached FILENAMEНастройка игнорируемых файлов для всех репозиториев на компьютере
Вы можете сообщить Git всегда игнорировать определенные файлы или каталоги при создании фиксации в любом репозитории Git на компьютере. Например, эту функцию можно использовать для пропуска любых временных файлов резервного копирования, создаваемых текстовым редактором.
Чтобы всегда игнорировать определенный файл или каталог, добавьте его в файл с именем ignore , расположенным внутри каталога ~/.config/git . По умолчанию Git будет игнорировать все файлы и каталоги, перечисленные в глобальном файле ~/.config/git/ignore конфигурации. git Если каталог и ignore файл еще не существуют, их может потребоваться создать.
Исключение локальных файлов без создания файла .gitignore
Если вы не хотите создать файл для совместного .gitignore использования с другими пользователями, можно создать правила, которые не зафиксированы в репозитории. Этот метод можно использовать для локально создаваемых файлов, которые не должны создавать другие пользователи, например, для файлов, создаваемых редактором.
Используйте любимый текстовый редактор, чтобы открыть файл, вызываемый .git/info/exclude в корневом каталоге репозитория Git. Любое добавляемое здесь правило не будет синхронизироваться, и будут игнорироваться только файлы для локального репозитория.
- Откройте Терминал Терминал GIT Bash .
- Перейдите к расположению репозитория Git.
- Откройте файл .git/info/exclude с помощью избранного текстового редактора.
Дополнительные материалы
- Игнорировать файлы в документации по Git
- .gitignore в документации по Git
- Коллекция полезных шаблонов .gitignore в репозитории github/gitignore
- Сайт gitignore.io