Hur man konfigurerar .gitignore som en vitlista

0
167

.gitignore -filen är en avgörande del av alla Git -arkiv; det förhindrar att oönskade filer spåras och delas i källkontroll. Vanligtvis vill du ignorera vissa filer och mappar, men ibland är det lättare att göra det tvärtom.

Använda .gitignore som en vitlista

Regelbunden .gitignore -användning är enkel & ge det ett filnamn eller matchande jokertecken, och filen blockeras. När du använder den som vitlista blir det dock lite mer komplicerat.

Först behöver du de två följande direktiven högst upp i filen, som blockerar allt som standard med ett alltomfattande jokertecken*:

*!*/

Den andra raden behövs eftersom vitlistning är inte så enkelt som att blockera. På grund av hur Git hanterar dessa filer, om den ser att en katalog är blockerad, kommer den inte ens att försöka kontrollera något i katalogen för att se om den blockerades senare. Det hoppar helt enkelt över det och ignorerar alla regler i den katalogen.

Så den andra raden här berättar för Git att specifikt kontrollera undermappar. Utropstecknet! används för att göra regeln till en vitlista. Det matchar alla kataloger, men eftersom det inte matchar någonting inuti dessa kataloger kommer Git inte att spåra några filer ännu bara med bara dessa två rader.

Detta tillåter inställningar som följande:

*! */# spåra den här filen! .gitignore # vitlista allt i ./config/! config/Advertisement

Själva .gitignore -filen finns i huvudkatalogen, så den kan bara vitlistas normalt. Vitlistningskataloger kräver helt enkelt ett snedstreck, och Git återgår till det normala i den katalogen och åsidosätter det tidigare jokertecken som helt blockerar.

Om du vill uttryckligen vitlista en katalog och allt dess innehåll måste du använda dubbel jokertecken,! config/**. Ett enda jokertecken skulle inte sprida sig till underkataloger rekursivt. Detta kommer att åsidosätta alla andra blockeringsregler.

Debugging .gitignore

Om du har problem med din konfiguration kan du kan felsöka det med kommandot check-ignore Git:

git check-ignore -v testfile.json