J'ai beaucoup de projets dans ma solution .Net. Je voudrais exclure tous les dossiers "bin/Debug" et "bin/Release" (et leur contenu), tout en incluant le dossier "bin" lui-même et toutes les dll qu'il contient.
.gitignore avec "bin /" ignore les dossiers "Debug" et "Release", mais aussi les dll contenues dans le dossier "bin".
"bin/Debug" ou "bin/Release" dans le fichier .gitignore n'exclut pas les répertoires, sauf si je qualifie complètement le motif ignoré comme "Solution/Project/bin/Debug" - ce que je ne veux pas faire comme devra inclure ce modèle complet pour chaque projet dans ma solution, ainsi que pour l'ajouter à tout nouveau projet ajouté.
Aucune suggestion?
Avez-vous essayé des wildcards?
Solution/*/bin/Debug
Solution/*/bin/Release
Avec la version 1.8.2 de git, vous pouvez également utiliser le caractère générique **
pour faire correspondre tout niveau de sous-répertoires:
**/bin/Debug/
**/bin/Release/
Vous pouvez utiliser .gitignore au niveau supérieur pour ignorer tous les répertoires du projet portant le même nom. Par exemple:
Debug/
Release/
Cela devrait mettre à jour immédiatement afin 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 ils ignoreront les ignorés.
La question ne consiste pas à ignorer tous les sous-répertoires, mais je ne trouvais la réponse nulle part. Je vais donc la poster: */*
.
Toutes les réponses ci-dessus sont correctes, mais je ne pense pas que le nom mentionné soit mentionné: une fois que vous avez ajouté un fichier de ce répertoire dans le référentiel, vous ne pouvez pas ignorer ce répertoire/sous-répertoire contenant ce fichier (git ignorera cette directive ). Vous devrez d'abord supprimer tous les fichiers du répertoire cible du référentiel, puis ignorer ce dossier.
En plus de mettre les entrées correctes dans votre fichier .gitignore, si vous essayez d'ignorer quelque chose déjà ajouté au référentiel, vous devez faire git rm -r /path/to/dir
et le valider avant d'ajouter le répertoire à votre fichier .gitignore. Sinon, la seule chose que git va ignorer est votre directive ignore.
La seule façon pour moi que cela fonctionne sur 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 que vous devez autoriser explicitement le contenu pour chaque niveau que vous souhaitez inclure. Donc, si j'ai des sous-répertoires 5 profonds sous thèmes, je dois quand même le préciser.
Ceci est tiré du commentaire de @ Yarin ici: https://stackoverflow.com/a/5250314/169615
Ce sont des sujets utiles:
J'ai aussi essayé
*
*/*
**/**
et **/wp-content/themes/**
ou /wp-content/themes/**/*
Rien de tout cela n'a fonctionné pour moi non plus. Beaucoup de piste et d'erreur!
Pour exclure le contenu et les sous-répertoires:
**/bin/*
Pour simplement exclure tous les sous-répertoires mais prendre le contenu, ajoutez "/":
**/bin/*/
Pour ignorer tous les sous-répertoires, vous pouvez simplement utiliser:
**/
Cela fonctionne à partir de la version 1.8.2 de git.
La méthode générique pour ignorer tous les sous-dossiers, tout en continuant de suivre les fichiers situés dans le répertoire /bin
, consiste à ajouter la ligne suivante au fichier .gitignore de votre projet:
bin/*/*
Si vous souhaitez ignorer uniquement des sous-dossiers nommés particuliers, vous pouvez procéder comme suit:
bin/Debug/*
bin/Release/*
nb. si le répertoire bin
ne se trouve pas à la racine de votre projet (à côté du fichier .gitignore), alors au lieu de, par exemple. bin/*/*
vous pourriez avoir besoin de path/to/bin/*/*