2010-11-22 45 views
382

Possible en double:
How do I add an empty directory to a git repositoryComment .gitignore tous les fichiers/dossiers dans un dossier, mais pas le dossier lui-même?

Je veux vérifier dans un dossier vide. Comment puis-je faire ceci?

+7

J'ai un répertoire de téléchargement. Je veux commettre le répertoire vide, mais sans tout le contenu. –

+4

J'avais exactement la même chose. Juste ajouté un fichier README à celui expliquant que c'est le répertoire de téléchargement et git l'a compris :) – Evgeny

+0

Vous avez à peu près répondu à votre propre question: mettez un .gitignore qui dit "ignorez tout" dans ce dossier; c'est la réponse de mipadi. – Cascabel

Répondre

251

Vous ne pouvez pas valider des dossiers vides dans git. Si vous voulez qu'il apparaisse, vous devez y mettre quelque chose, même juste un fichier vide.

Par exemple, ajouter un fichier vide appelé .gitkeep dans le dossier que vous souhaitez conserver, puis dans votre fichier .gitignore écrire:

# exclude everything 
somefolder/* 

# exception to the rule 
!somefolder/.gitkeep 

Engagez votre .gitignore et les fichiers .gitkeep et cela devrait résoudre votre problème.

+0

n'est pas là une option '--bare'? – luckytaxi

+8

@luckytaxi: Un référentiel nu est un référentiel sans arbre de travail. Cela n'a rien à voir avec ça. – Cascabel

+24

La meilleure façon est celle indiquée ci-dessus par Trianam. Incluez un fichier .gitignore dans le répertoire. Ce .gitignore devrait ignorer tous les fichiers dans ce répertoire (*), sauf lui-même (! .gitignore). –

908

mettre ce .gitignore dans le dossier, puis git add .gitignore

* 
*/ 
!.gitignore 

La ligne * dit git d'ignorer tous les fichiers dans le dossier, mais !.gitignore dit git d'inclure encore le fichier .gitignore. De cette façon, votre référentiel local et tous les autres clones du référentiel reçoivent tous les deux le dossier vide et le .gitignore dont il a besoin. Editer: Peut être évident mais aussi ajouter */au git ignore pour ignorer aussi les sous-dossiers.

+34

@ bool.dev Oui, mais maintenant vous avez ignoré votre fichier .gitignore, ce qui signifie qu'il ne fonctionnera pas sur les autres copies de votre dépôt: P – Milosz

+3

+1 pour la ligne! .gitignore qui aurait été vraiment facile à oublier –

+2

Belle réponse, mais aurait été mieux avec une explication de ce qui se passe, au lieu de compter sur les commentateurs pour expliquer. – jononomo