Gitignore где должен лежать
Перейти к содержимому

Gitignore где должен лежать

  • автор:

Игнорирование файлов — Введение в 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/**/*.txt 

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

    Продолжим работать с .gitignore:

    touch .gitignore # Добавляем в файл правила игнорирования по примеру выше git add .gitignore git commit -m 'update gitignore' 

    Как только .gitignore создан и в него добавлен какой-то файл или директория, игнорирование заработает автоматически. Все новые файлы, попадающие под игнорирование, не отобразятся в выводе команды git status .

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

    Самостоятельная работа
    1. Добавьте файл .gitignore в проект
    2. Добавьте файл INFO.md в список игнорируемых файлов
    3. Удалите файл INFO.md из репозитория
    4. Создайте файл INFO.md и убедитесь в том, что git status его не отображает
    5. Залейте изменения на GitHub
    Дополнительные материалы
    1. Коллекция полезных gitignore для всех ситуаций
    2. Инструкция от 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.

    1. Откройте Терминал Терминал GIT Bash .
    2. Перейдите к расположению репозитория Git.
    3. .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. Любое добавляемое здесь правило не будет синхронизироваться, и будут игнорироваться только файлы для локального репозитория.

    1. Откройте Терминал Терминал GIT Bash .
    2. Перейдите к расположению репозитория Git.
    3. Откройте файл .git/info/exclude с помощью избранного текстового редактора.

    Дополнительные материалы

    • Игнорировать файлы в документации по Git
    • .gitignore в документации по Git
    • Коллекция полезных шаблонов .gitignore в репозитории github/gitignore
    • Сайт gitignore.io

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

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