web-dev-qa-db-fra.com

Git Ignore tout dans un répertoire sauf les sous-dossiers

Voici ma structure de dossiers:

data/
    .gitignore
    uploads/
        .gitignore

Je voudrais valider les dossiers mais pas les fichiers qu'ils contiennent.

J'ajoute donc un fichier .gitignore dans chaque dossier avec le contenu suivant:

# Ignore everything in this directory
*
# Except this file
!.gitignore

Le problème est que * correspond également aux répertoires, donc git ne fait que suivre data/.gitignore

32
nickel715

La solution est assez simple, ajoutez !*/ aux fichiers .gitignore et seuls les fichiers du dossier actuel seront ignorés

# Ignore everything in this directory
*
# Except this file
!.gitignore
# Except folders
!*/
36
nickel715

Veuillez ne pas abuser .gitignore des dossiers. Mieux vaut s'en tenir aux méthodes par défaut pour que les développeurs ultérieurs puissent rapidement entrer dans votre projet.

  1. Ajoutez un .gitkeep fichier dans les dossiers que vous souhaitez valider sans les fichiers
  2. Exclure les dossiers, mais pas le .gitkeep de votre principal.gitignore fichier.

    folder/*
    !folder/.gitkeep
    

Cela ignore tous les fichiers d'un dossier, mais pas le .gitkeep fichier. Maintenant, le dossier sera validé avec uniquement le .gitkeep fichier en tant que contenu.

55
kaiser