Gitignore tester
Indsæt dine .gitignore-regler og en liste over filstier for at se nøjagtigt, hvilke filer der ignoreres, med hvilken nøjagtig regel og linje, og hvilke negationsregler der stille er døde, fordi en overordnet mappe allerede er ignoreret.
Resultat
"Hvorfor virker min .gitignore negation ikke?" er et af de mest almindelige git-spørgsmål, der findes, og det ærlige svar er næsten altid det samme: et `!mønster`, der forsøger at re-inkludere en fil i en mappe, som en tidligere regel allerede udelukker, kan aldrig fungere, fordi git ikke går ned i ignorerede mapper for at gentjekke noget inde i dem. Dette værktøj genimplementerer git's faktiske .gitignore matchende algoritme - ikke en tilnærmelse - specifikt så det kan fange og forklare den nøjagtige situation sammen med alle andre mønsterregler, som git understøtter.
Indsæt dine .gitignore-regler i den ene boks og en liste over filstier (en pr. linje, f.eks. `dist/index.js`, `node_modules/foo/bar.js` eller `.env`) i den anden, og værktøjet evaluerer hver sti nøjagtigt som git ville: kommentarer og tomme linjer springes over, med mindre en ledende mellemrum forsøges, med mindre en førende regel fjernes, og en! `/` forankrer det til roden i stedet for at lade det matche i enhver dybde, et efterfølgende `/` begrænser det til mapper, og `*`, `?`, `[abc]` karakterklasser og `**` (matching på tværs af biblioteksgrænser) fungerer alle i henhold til de dokumenterede glob-regler.
Kritisk er det, at stier kontrolleres mappe for mappe fra roden og ned, på samme måde som git's egen ignore-motor fungerer - ikke ved at teste den fulde sti mod hver regel isoleret. Det er det, der gør det muligt korrekt at detektere død-negation-tilfældet: hvis `dist/` ignoreres på linje 3 og en senere `!dist/keep.js` forsøger at redde en fil inde i den, rapporterer dette værktøj `dist/keep.js` som stadig ignoreret, navngiver line-3-reglen som årsagen og silent flager negationen separat som shadowed, i stedet for at den fungerede.
Resultattabellen giver hver testet sti sin egen række med en klar ja/nej ignoreret dom, den nøjagtige regeltekst og linjenummer, der afgjorde det, og - når det er relevant - en almindeligt sprognote, der forklarer en skygget negation eller en nedarvet overordnet mappe-regel. Det er den detalje, der gør en forvirrende .gitignore til en, du faktisk kan ræsonnere om, før du begår.