ПУТИ И ПРАВИЛА GIT

Проверка .gitignoreс историей решений

Один корневой .gitignore и список путей. Завершающий / обозначает каталог.

Проверка .gitignore

Правила .gitignore

Проверяемые пути

Правила и пути остаются в браузере. Репозиторий не читается и не изменяется.

Результаты по путям

Введите хотя бы один путь.

Формат путей и область проверки

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

Один корневой .gitignore, модель неотслеживаемых путей, сравнение байтов UTF-8 с учётом регистра. Без вложенных правил, глобальных исключений, индекса и чтения диска.

До 50 физических строк правил и 200 непустых путей; 256 единиц UTF-16 на правило, 512 на путь, 32 сегмента. Управляющие символы запрещены. Worker останавливается через 2 секунды.

Результаты устарели или вычисляются.

Проверка .gitignore помогает разобраться, почему точное исключение с ! не возвращает файл. Причина может быть выше по дереву: исключённый родительский каталог закрывает доступ к дочерним путям. Результат показывает этот каталог и строку, определившую его состояние.

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

Что объясняет Проверка .gitignore

Найдите каталог, мешающий исключению

Правило build/ закрывает каталог до проверки build/keep.txt, поэтому !build/keep.txt не возвращает файл. Правило cache/* оставляет сам cache/ доступным, и !cache/keep.txt может сработать. Проверка .gitignore указывает блокирующего предка: исключения из правил не могут открыть уже закрытый родительский каталог.

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

Проследите решения в порядке строк

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

Файл проходит три последовательных этапа: исключение, возвращение и повторное исключение.

Как точно воспроизвести случай

01

Укажите базу и тип пути

Все пути отсчитываются от каталога проверяемого .gitignore. build/ обозначает каталог, build — файл. Начальный / привязывает правило к базе, но в списке путей не допускается. Пробелы считаются частью имени и не удаляются автоматически.

02

Проверьте первого исключённого предка

Откройте историю результата. Если родитель исключён, сначала верните его или исключайте только содержимое шаблоном вроде cache/*. Отрицание для дочернего файла не преодолевает этот запрет. Определяющее правило может находиться раньше текущего шага истории.

03

Выберите момент пересчёта

Автоматическая проверка ждёт 350 мс после изменения. Отключите её для запуска кнопкой или Ctrl/Cmd+Enter. Любое изменение делает отчёт устаревшим. Пример и Очистить сначала показывают предпросмотр; Вернуть восстанавливает поля и результаты. Для сохранения истории выберите JSON.

От шаблона к проверяемому результату

Синтаксис правил Git

Движок ignore 7.0.9 обрабатывает *, ?, диапазоны в скобках и **. Сравнение учитывает регистр и работает с байтами UTF-8: ? соответствует одному байту, а не целому многобайтному символу. Раскрытия фигурных скобок и отдельного режима регулярных выражений нет.

Точный номер последнего правила

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

Два вида отчёта

JSON сохраняет исходные пути, текст правил и все состояния префиксов. TSV содержит сводку: тип пути, признак исключения, строку, шаблон и блокирующего родителя. Экспорт включает все пути, даже когда видны только 50. Ячейки TSV, похожие на формулы, получают защитный апостроф.

Область моделирования и ограничения

Один файл без сведений об индексе
Проверка .gitignore моделирует неотслеживаемые пути для одного корневого файла. Вложенные .gitignore, .git/info/exclude, глобальные исключения и шаблоны командной строки не объединяются. Состояние индекса, подготовленные изменения, символические ссылки и наличие файлов на диске неизвестны.
Буквальные строки путей
Используйте / и завершающий слеш для каталогов. Абсолютные пути, пути Windows, сегменты . и .., управляющие символы и некорректный Unicode запрещены. Пустые строки кандидатов пропускаются; строка из пробелов считается именем. Начальные # и ! нужно экранировать для буквального совпадения. Неэкранированные пробелы в конце правила игнорируются.
Ограничения размера и времени
Не более 50 физических строк правил, 200 непустых кандидатов, 256 единиц UTF-16 на правило, 512 на путь и 32 сегментов. Один завершающий перевод строки не добавляет правило. Через 2 секунды worker завершается. Устаревшие результаты и результаты с ошибкой нельзя экспортировать.
Сверяйтесь с Git в своём репозитории
Регистр всегда учитывается; используются публичные API пакета ignore. Это не модель всех команд и настроек Git. Для окончательной проверки запустите git check-ignore -v в репозитории. Правило без совпадений в этой выборке может действовать на другие файлы и не становится ненужным. Поддерживается только ** как отдельный сегмент; формы *** и a** выходят за рамки инструмента, хотя Git может их обрабатывать.

Проверка .gitignore: вопросы и ответы

Почему файл остаётся отслеживаемым после добавления в .gitignore?

Правила игнорирования не удаляют уже отслеживаемые файлы из индекса. Проверьте состояние файла средствами Git. Если нужно прекратить отслеживание, сохранив локальную копию, рассмотрите git rm --cached для нужного пути и последующий коммит удаления из индекса. Этот инструмент репозиторий не меняет.

Почему исключение с ! не срабатывает?

Частая причина — исключённый родительский каталог: Git не посещает его содержимое. Также проверьте порядок строк, ведь более позднее правило может снова исключить путь. Проверка .gitignore показывает блокирующего предка и правило, определившее итоговое состояние.

Как оставить один файл в игнорируемой папке?

Оставьте саму папку доступной и исключите её содержимое, например build/*, затем добавьте !build/keep.txt. Если исключён любой вышестоящий каталог, сначала нужно вернуть и его. Одно !build/keep.txt после build/ не сработает: родитель остаётся закрытым.

Можно ли разместить несколько файлов .gitignore?

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

Распространяются ли правила на другие репозитории?

Обычный .gitignore действует в своём дереве каталогов, а не во всех репозиториях компьютера. Для личных общих исключений Git поддерживает файл, заданный через core.excludesFile. Такой глобальный источник здесь не читается и не объединяется с введёнными правилами.

Есть пример, который стоит проверить?

Проверьте изменение перед применением

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

Сохраните историю для обсуждения изменения, затем подтвердите поведение средствами Git в нужном репозитории.