Git ignore les sous-dossiers

j'ai beaucoup de projets dans ma solution .Net. J'aimerais exclure tous les dossiers" bin/Debug "et" bin/Release "(et leur contenu), mais inclure tout de même le dossier" bin " lui-même et toute dll qu'il contient.

.gitignore avec" bin/ "ignore les dossiers" Debug "et" Release", mais aussi toute dll contenue dans le dossier" bin".

"bin/Debug" ou "bin/Release" dans le .le fichier gitignore n'exclut pas les répertoires, sauf si je me qualifie pleinement le modèle ignore comme "Solution/Project/bin / Debug" - ce que je ne veux pas faire car je vais avoir besoin d'inclure Ce modèle complet pour chaque projet dans ma solution, ainsi que l'Ajouter pour tout nouveau projet ajouté.

des suggestions?

291
demandé sur Marcel 2010-03-30 17:37:25

9 réponses

Avez-vous essayé les jokers?

Solution/*/bin/Debug
Solution/*/bin/Release

avec la version 1.8.2 de git, vous pouvez également utiliser le Joker ** pour correspondre à n'importe quel niveau de sous-répertoires:

**/bin/Debug/
**/bin/Release/
388
répondu Josh Lee 2013-03-01 13:49:20

vous pouvez utiliser .gitignore dans le niveau supérieur à ignorer tous les répertoires dans le projet avec le même nom. Par exemple:

Debug/
Release/

ceci devrait être mis à jour immédiatement pour qu'il soit visible lorsque vous faites le statut git. Assurez-vous que ces répertoires ne sont pas déjà ajoutés à git, car cela outrepassera les ignorants.

88
répondu Andreas 2010-03-30 14:59:00

la question n'est pas d'ignorer tous les sous-répertoires, mais je n'ai pu trouver la réponse nulle part, donc je vais la poster: */* .

43
répondu mgold 2013-04-24 03:49:43

toutes les réponses ci-dessus sont valables, mais quelque chose que je ne pense pas être mentionné est qu'une fois que vous ajoutez un fichier de ce répertoire dans le repo, vous ne pouvez pas ignorer ce répertoire/sous-répertoire qui contient ce fichier (git ignorera cette directive). Vous devrez supprimer tous les fichiers du répertoire cible première de la mise en pension et alors vous pouvez ignorer ce dossier.

26
répondu ajacian81 2015-03-08 04:14:27

en plus de mettre les bonnes entrées dans votre .gitignore fichier, si vous essayez d'ignorer quelque chose déjà ajouté à la pension, vous devez faire git rm -r /path/to/dir et de commettre que avant d'ajouter le dir à votre .dossier gitignore. Sinon, la seule chose que git ignorera est votre directive ignore.

17
répondu MidnightJava 2016-03-07 19:29:33

la seule façon de faire fonctionner ma machine était de le faire de cette façon:

# Ignore all directories, and all sub-directories, and it's contents:
*/*

#Now ignore all files in the current directory 
#(This fails to ignore files without a ".", for example 
#'file.txt' works, but 
#'file' doesn't):
/*.*

#Only Include these specific directories and subdirectories:
!wordpress/
!wordpress/*/
!wordpress/*/wp-content/
!wordpress/*/wp-content/themes/

notez comment vous devez autoriser explicitement le contenu pour chaque niveau que vous voulez inclure. Donc si j'ai des sous-répertoires 5 en profondeur sous les thèmes, j'ai encore besoin de le préciser.

c'est du commentaire de @Yarin ici: https://stackoverflow.com/a/5250314/1696153

ce sont des sujets utiles:

j'ai aussi essayé

*
*/*
**/**

et **/wp-content/themes/**

ou /wp-content/themes/**/*

ça n'a pas marché pour moi non plus. Beaucoup de trail et de l'erreur!

13
répondu Katie S 2018-02-20 13:50:01

pour ignorer tous les sous-répertoires vous pouvez simplement utiliser:

**/

cela fonctionne à partir de la version 1.8.2 de git.

4
répondu frederickjh 2016-11-01 15:34:57

Le générique façon d'ignorer tous les sous-dossiers, tout en continuant à suivre les fichiers qui sont dans le /bin répertoire serait d'ajouter la ligne suivante à votre projet .dossier gitignore:

bin/*/*

si vous voulez ignorer seulement certains sous-dossiers nommés, vous pouvez faire:

bin/Debug/*
bin/Release/*

nb. si le répertoire bin n'est pas à la racine de votre projet (à côté du .gitignore file), puis au lieu de eg. bin/*/* vous pourrait avoir besoin de path/to/bin/*/*

3
répondu Nick F 2016-02-15 17:28:54

pour exclure le contenu et les sous-répertoires:

**/bin/*

pour exclure tous les sous-répertoires mais prendre le contenu, ajouter"/":

**/bin/*/
2
répondu A. Morel 2018-06-18 13:28:17