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?
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/
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.
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: */*
.
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.
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.
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:
- Comment faire niée habitudes de travail .gitignore?
- Comment faire gitignore l'exclusion des règles de fonctionnement?
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!
pour ignorer tous les sous-répertoires vous pouvez simplement utiliser:
**/
cela fonctionne à partir de la version 1.8.2 de git.
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/*/*
pour exclure le contenu et les sous-répertoires:
**/bin/*
pour exclure tous les sous-répertoires mais prendre le contenu, ajouter"/":
**/bin/*/