Тестер .gitignore
Вставте правила .gitignore і список шляхів до файлів, щоб побачити, які файли ігноруються, яким саме правилом і рядком, а також які правила-виключення (!) мовчки не працюють через уже проігноровану батьківську директорію.
Результат
«Чому не працює моє виключення в .gitignore?» — одне з найпоширеніших питань про git, і чесна відповідь майже завжди та сама: `!pattern`, що намагається повернути файл усередині директорії, яку вже виключає попереднє правило, ніколи не спрацює, бо 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 на такий, у якому можна реально розібратися перед комітом.