Gitignore-tester
Plak uw .gitignore-regels en een lijst met bestandspaden om precies te zien welke bestanden worden genegeerd, volgens welke exacte regel en regel, en welke negatieregels stilzwijgend dood zijn omdat een bovenliggende map al wordt genegeerd.
Resultaat
"Waarom werkt mijn .gitignore-ontkenning niet?" is een van de meest voorkomende git-vragen die er zijn, en het eerlijke antwoord is bijna altijd hetzelfde: een `!pattern` die probeert een bestand opnieuw op te nemen in een map die een eerdere regel al uitsluit, kan nooit werken, omdat git niet afdaalt naar genegeerde mappen om iets daarin opnieuw te controleren. Deze tool implementeert het eigenlijke .gitignore matching-algoritme van git opnieuw – geen benadering – specifiek zodat het die exacte situatie kan opvangen en verklaren, samen met elke andere patroonregel die git ondersteunt.
Plak je .gitignore-regels in het ene vak en een lijst met bestandspaden (één per regel, zoals `dist/index.js`, `node_modules/foo/bar.js` of `.env`) in het andere, en de tool evalueert elk pad precies zoals git dat zou doen: commentaar en lege regels worden overgeslagen, spaties worden verwijderd tenzij ze worden geëscaped, een leidende `!` ontkent een regel, een leidende `/` verankert het aan de root in plaats van Door het op elke diepte te laten matchen, beperkt een trailing `/` het tot mappen, en `*`, `?`, `[abc]` tekenklassen en `**` (overeenkomend over mapgrenzen heen) werken allemaal volgens de gedocumenteerde glob-regels.
Cruciaal is dat paden directory voor directory vanaf de root naar beneden worden gecontroleerd, op dezelfde manier als git's eigen negeer-engine werkt - niet door het volledige pad aan elke regel afzonderlijk te testen. Dat is wat het mogelijk maakt om het geval van een dode ontkenning correct te detecteren: als `dist/` wordt genegeerd op regel 3 en een latere `!dist/keep.js` één bestand daarin probeert te redden, rapporteert deze tool `dist/keep.js` als nog steeds genegeerd, noemt de regel van regel 3 als de reden, en markeert de negatie afzonderlijk als geschaduwd in plaats van stilletjes te doen alsof deze werkte.
De resultatentabel geeft elk getest pad zijn eigen rij met een duidelijk ja/nee genegeerd oordeel, de exacte regeltekst en het regelnummer dat dit besliste, en – indien relevant – een opmerking in eenvoudige taal waarin een schaduwontkenning of een overgeërfde regel voor de bovenliggende map wordt uitgelegd. Dat is het detail dat een verwarrende .gitignore verandert in een .gitignore waarover je daadwerkelijk kunt redeneren voordat je een commit maakt.