Gitignore Tester
Klistra in dina .gitignore-regler och en lista med filsökvägar för att se exakt vilka filer som ignoreras, med vilken exakt regel och rad, och vilka negationsregler som är tysta döda eftersom en överordnad katalog redan ignoreras.
Resultat
"Varför fungerar inte min .gitignore negation?" är en av de vanligaste git-frågorna som finns, och det ärliga svaret är nästan alltid detsamma: ett `!mönster` som försöker återinkludera en fil i en katalog som en tidigare regel redan utesluter kan aldrig fungera, eftersom git inte sjunker ner i ignorerade kataloger för att omkontrollera något inuti dem. Det här verktyget återimplementerar gits faktiska .gitignore-matchningsalgoritm – inte en approximation – specifikt så att det kan fånga och förklara den exakta situationen, tillsammans med alla andra mönsterregler som git stöder.
Klistra in dina .gitignore-regler i en ruta och en lista med filsökvägar (en per rad, som `dist/index.js`, `node_modules/foo/bar.js` eller `.env`) i den andra, och verktyget utvärderar varje sökväg precis som git skulle göra: kommentarer och tomma rader hoppas över, såvida inte ett inledande blanksteg försvinner, om inte ett ledande mellanslag försvinner en! `/` förankrar det till roten istället för att låta det matcha på vilket djup som helst, ett efterföljande `/` begränsar det till kataloger, och `*`, `?`, `[abc]` teckenklasser och `**` (matchning över kataloggränser) fungerar alla enligt de dokumenterade globreglerna.
Kritiskt sett kontrolleras sökvägar katalog för katalog från roten och ner, på samma sätt som gits egen ignoreringsmotor fungerar — inte genom att testa hela sökvägen mot varje regel isolerat. Det är det som gör det möjligt att korrekt upptäcka dödnegeringsfallet: om `dist/` ignoreras på rad 3 och en senare `!dist/keep.js` försöker rädda en fil inuti den, rapporterar det här verktyget `dist/keep.js` som fortfarande ignorerad, namnger line-3-regeln som orsak, och silent-flaggar negationen separat än shadowed istället för shadowed den fungerade.
Resultattabellen ger varje testad sökväg en egen rad med ett tydligt ja/nej ignorerat omdöme, den exakta regeltexten och radnumret som avgjorde det, och – närhelst det är relevant – en anteckning på vanligt språk som förklarar en skuggad negation eller en ärvd regel för överordnad katalog. Det är detaljen som gör en förvirrande .gitignore till en som du faktiskt kan resonera om innan du begår.