Aangezien Git geen mappen kent, alleen bestanden, komen lege mapstructuren niet in de repository terecht. Omdat veel kaders en projecten ze echter absoluut nodig hebben, zouden ze daar moeten eindigen. Een gangbare praktijk is het maken van zogenaamde placeholder-bestanden (vaak .gitkeep genoemd), die impliciet de mapstructuur specificeren. Deze bestanden zijn eenvoudig aan te maken en zorgen er desgewenst ook voor dat andere bestanden in de mappen worden genegeerd.
Eerst maken we een testrepository en maken we enkele submappen:
434e6616f335599d241482f169f68f1b
We hebben nu de volgende mappenstructuur:
434e6616f335599d241482f169f68f1b
Zoals verwacht laat een git-status -u ons geen wijzigingen zien:
We zullen nu find gebruiken om de placeholder-bestanden op alle vereiste locaties te maken:
434e6616f335599d241482f169f68f1b
We hebben nu de volgende map- / bestandsstructuur ontvangen:
434e6616f335599d241482f169f68f1b
Een git-status -u laat nu zien dat alle mappen (impliciet) in de repository terechtkomen:
Als we er nu voor willen zorgen dat de mappenstructuur altijd in de repository terecht komt, maar geen bestanden (behalve de placeholder-bestanden), maken we een gitignore:
434e6616f335599d241482f169f68f1b
We maken gebruik van de Syntaxis met dubbele ster:
434e6616f335599d241482f169f68f1b
De eerste regel negeert recursief alle bestanden en mappen (op elk niveau) in de map "foo", de tweede regel sluit recursief alle mappen uit van deze regel (op elk niveau) en de derde regel sluit alle .gitkeep-bestanden uit (op elk niveau) .
Laten we nu enkele testbestanden maken:
434e6616f335599d241482f169f68f1b
Een git status -u laat ons nu het gewenste resultaat zien: