Тестер .gitignore
Вставте свої правила .gitignore та список шляхів до файлів, щоб точно побачити, які файли ігноруються, за яким саме правилом і рядком, а також які правила заперечення не діють, оскільки батьківська тека вже ігнорується.
🔒 Обробляється повністю у вашому браузері — те, що ви тут вводите, ніколи не вивантажується.
Результат
«Чому моє заперечення в .gitignore не працює?» — одне з найпоширеніших питань про git, і чесна відповідь майже завжди однакова: `!шаблон`, який намагається повернути файл усередині теки, що її вже виключило попереднє правило, ніколи не спрацює, оскільки git не заходить в ігноровані теки, щоб перевіряти щось усередині. Цей інструмент відтворює справжній алгоритм зіставлення .gitignore у git — не приблизний — саме для того, щоб виявити та пояснити цю конкретну ситуацію, а також усі інші правила шаблонів, які підтримує git.
Вставте свої правила .gitignore в одне поле, а список шляхів до файлів (по одному в рядку, наприклад `dist/index.js`, `node_modules/foo/bar.js` або `.env`) — в інше, і інструмент оцінить кожен шлях точно так, як це зробив би git: коментарі та порожні рядки пропускаються, кінцеві пробіли видаляються, якщо не екрановані, початковий `!` заперечує правило, початковий `/` прив'язує його до кореня замість зіставлення на будь-якій глибині, кінцевий `/` обмежує правило лише теками, а `*`, `?`, символьні класи `[abc]` та `**` (для зіставлення через межі тек) працюють згідно з задокументованими правилами glob.
Принципово важливо, що шляхи перевіряються тека за текою від кореня вниз, так само, як працює власний механізм ігнорування git — а не шляхом перевірки повного шляху на відповідність кожному правилу окремо. Саме це дозволяє коректно виявляти випадок мертвого заперечення: якщо `dist/` ігнорується на рядку 3, а пізніше `!dist/keep.js` намагається врятувати один файл усередині, цей інструмент повідомляє, що `dist/keep.js` усе ще ігнорується, називає правило з рядка 3 як причину та окремо позначає заперечення як приховане, а не мовчки вдає, що воно спрацювало.
Таблиця результатів надає кожному протестованому шляху власний рядок із чітким вердиктом «так/ні» щодо ігнорування, точним текстом правила та номером рядка, які це визначили, і — коли це доречно — зрозумілою приміткою, що пояснює приховане заперечення або успадковане правило від батьківської теки. Це та деталь, яка перетворює заплутаний .gitignore на зрозумілий, який можна обміркувати перед комітом.