Игнорирование файлов — Введение в 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 для игнорирования файлов, которые вы не хотите возвращать в 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
Как создать gitignore файл на маке при выгрузке проекта на gitHub?

Файл .gitignore создают не при отправке готовой работы во внешний репозиторий, а задолго до того. Желательно даже вообще до создания первого локального коммита. Это обычный текстовый файл и он создаётся как и любой другой файл с кодом. Мак тут ничем не отличается от винды или линукса. Разве что Finder не показывает имена начинающиеся с точки. Если нажать command + shift + . , то увидишь скрытые файлы. Но мы всё равно создаём файлы в текстовом редакторе или в IDE, а не в проводнике. И редактор и Git этот файл видят в любом случае.
Ответ написан более года назад
Нравится 3 2 комментария
Pavel2345 @Pavel2345 Автор вопросана винде я просто создавал публичный репозиторий на GitHub, клонировал на GitHub desktop, открывал через блокнот .gitignore-файл и коммитил все что нужно, проект сжимался и я заливал его на GitHub. На маке же провожу точно такую же процедуру и ничего работает .

Сергей Кузнецов @sergey-kuznetsov Куратор тега Git
Pavel2345, тогда всё просто. Твоя проблема не в то, как создать файл, а в том, что файл есть, но ты его не видишь.
На маке файлы с точкой по умолчанию не видны в его проводнике.
Нажми cmd + shift + . и увидишь.Вот только зачем тебе видеть его в Finder. Работают обычно в IDE или текстовом редакторе, а они всё видят.
Игнорирование файлов в Git — Файл gitignore


Если у вас возникли файлы, которые вы не хотите добавлять в репозитории, на помощь придет файл .gitignore. Часто это файлы, пароли, сборки или файлы системы. На протяжении рабочего времени, эти файлы будут только увеличиваться в объеме. По итогу загрязняя ваш репозиторий.
Чтобы избежать загрузки лишних файлов, нужно в своём проекте создать файл с названием .gitignore. Обычного создания файла конечно же не хватит, данный файл еще следует нам настроить.
Какие файлы нужно исключить?
- Файлы редакторов IDE
- Выполняемые файлы — log, lock, cache или непостоянные файлы (tmp).
- Файлы системы, для Mac — .DS_Store, для Windows — Thumbs.db
- Директории зависимостей — vendor / node_modules.
- Build директории — public / dist.
- Файлы с секретной информацией, такие как пароли или ключи API.
Правила синтаксиса файла .gitignore
Синтаксис gitignore применяют glob формат с целью выбора файлов.
- 1 строчка — один принцип,
- Пустые строки пропускаются,
- (#) — означает комментарии, создавать следует в начале строки
- (/) — в начале строки указывает, что принцип используется только лишь в файлах и папках, которые находятся в том же каталоге, как и файл .gitignore,
- (*) указывает на любое число знаков(ноль или больше),
- (?) заменяет от нуля до единого знака. Можно указывать в различном месте,
- (**) применяют с целью указания каждого числа поддиректорий,
- (!) в начале строчки значит инвертирование правила, обязан для указания исключений из правил игнорирования,
- (\) — применяют с целью экранирования спецсимволов, например, чтобы игнорировать файл с именем «!file!.txt», нужно написать такое правило: «\!file!.txt»,
- Для исключения всего каталога, правило обязано заканчиваться на (/), в другом случае правило считается именованием файла.
Пример .gitignore файла
Пример был взят из нашего личного проекта
# Node artifact files
node_modules/
dist/
# Compiled Java class files
*.class
# Log files
*.log
# Package files
*.jar
# Maven
target/
dist/
# IDE
.idea/
.vscode/
# Unit test reports
TEST*.xml
# Generated by MacOS
.DS_Store
# Generated by Windows
Thumbs.db
# Applications
*.app
*.exe
*.war
# Large media files
*.mp4
*.tiff
*.avi
*.flv
*.mov
*.wmvКомментарии
# — считается объяснением и игнорирует строки. Пустые строки применяют для лучшей читабельности кода.
Рассечение
(/) — предполагает ограничитель каталогов. Косая черта в начале шаблона относится к каталогу, в котором находится .gitignore.
Если пример начинается с /, то к нему принадлежат файлы и каталоги, которые находятся в корне.
Если пример начинается без /, то к нему принадлежат все файлы, директории и поддиректории.
Если пример заканчивается /, то он относится только к директориям. Если директория игнорируется, то и его внутри лежащие папки и файлы тоже.Литеральные имена файлов
Легкий способ добавить файл в исключение — это прописать полный путь. assets/idea.log
Знаки подстановки
* – Равно нулю или более символов.
**- Объединенные звёздочки подходят любому файлу, нуля или больше каталогов. Когда за ним стоит слеш ( /), он соответствует только каталогам.
? – Относится к любому единичному знаку.
app/** = Совпадает с любым файлом внутри каталога app.Квадратные скобки
[. ] – подходит каждому знаку, находящихся в квадратные скобки. Если два символа связаны через дефис, то это указан диапазон символов. Диапазон содержит в себе все без исключения знаки, которые находятся между этими двумя символами. Диапазон можно задать в буквенном или числовом формате.
В случае если первый знак после [ является восклицательным знаком (!), то образец подходит любому знаков, кроме знаков из указанного набора.
*.[ae] = filename.e, filename.a
*.[!ae] = filename.x, filename.3, filename.sОтрицательные образцы
Если строка начинается с (!), она откладывает (вторично включает) любой файл, который игнорируется предшествующим стандартом. Исключением считается вторичное добавления файла снизу вашего документа, если исключен его родительский каталог.
Как исключить файлы, которые уже отслеживаются?
Случается так, когда файл уже был добавлен в отслеживание по ошибки/ необходимо прекратить отслеживание.
Сначала выполните всевозможные неполные изменения кода, а уже потом используйте команду (команда для всех файлов). Чтобы отменить отслеживание одного файла, воспользуйтесь командой (git rm -r —cached filename) git rm -r —cached . Таким образом мы удалили файл из индекса, но не удалили его из рабочего дерева.
Эта команда убирает все модифицированные файлы из индекса. Затем пропишите новую инициализацию файлов
git add .Осталось добавить коммит
git commit -m “gitignore is working”Личные правила игнорирования
Заготовки, специфичные для вашего местного репозитория и никак не будут доступны в иных репозиториях, обязаны добавляться в файле .git/info/exclude.
Например, этот файл можно использовать для игнорирования сгенерированных файлов из ваших личных инструментов проекта.
Глобальный .gitignore
В Git присутствует замечательная вероятность как глобальный файл .gitignore. Вы сможете настроить игнорирования для любого Git репозитория в локальной системе.
Данный файл может храниться в любом месте. Популярное место для него — это домашний каталог. Необходимо создать файл и настроить Git для его использования.
Для того чтобы определить ~/.gitignore_global в качестве глобального файла игнорирования Git, выполните список действий:
- Создаем файл: touch ~/.gitignore_global
- Добавляем файл в Git-конфигурацию: git config —global core.excludesfile ~/.gitignore_global
- Открываем файл в редакторе и добавляем кастомные настройки.
Глобальный гитигнор будет нужен для тех файлов, которые никогда не будут находиться в репозитории, такие как сборщики или автоматически созданные файлы редакторов.
Отладка файла .gitignore
Если у вас ряд файлов gitignore, то допустить ошибку очень просто. По итогу может получиться ненужный файл в репозитории. Для того чтобы отследить ошибки файлов, используйте команду git check-ignore с опцией -v, она показывает, что нужно отобразить данные совпадающего шаблона
Для проверки файла jar.lock, нужно осуществить команду:
git check-ignore -v www/jar.lockПосле этого вы увидите примерно такое сообщение, которое отобразит получившийся путь к файлу
www/.gitignore:27:/jar.lock
www/jar.lock
Файл может находиться не только в вашем проекте.Просмотр всех игнорируемых файлов
Как быстро посмотреть файлы, которые проигнорированы? Используйте команду
git status —ignoredЗаключение
Файл.gitignore даёт возможность нам исключать лишние файлы для репозитория. При этом его можно отлично использовать в различных целях. Существует сервис по созданию файла gitignore.io даёт возможность сгенерировать файл .gitignore для ваших предназначений.