J'ai une structure de répertoire comme ceci :
.git/
.gitignore
main/
...
tools/
...
...
À l'intérieur de main et tools, et de tout autre répertoire, à n'importe quel niveau, il peut y avoir un répertoire 'bin' ; que je veux ignorer (et je veux aussi ignorer tout ce qui se trouve en dessous). J'ai essayé chacun de ces modèles dans .gitignore mais aucun ne fonctionne :
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
Quelqu'un peut-il m'aider ? Le premier modèle (celui qui devrait fonctionner) fonctionne très bien si je fais ceci :
/main/**/bin/**/*
Mais je ne veux pas avoir une entrée pour chaque répertoire de premier niveau et je ne veux pas avoir à modifier .gitignore chaque fois que j'en ajoute un nouveau.
Ceci se passe sous Windows avec la dernière version de msysgit.
EDIT : une dernière chose, il y a des fichiers et des répertoires qui ont la sous-chaîne 'bin' ; dans leurs noms, je ne veux pas qu'ils soient ignorés :).
Avant la version 1.8.2, **
n'avait pas de signification particulière dans le .gitignore
. Depuis la version 1.8.2, git supporte que **
signifie zéro ou plusieurs sous-répertoires (voir [notes de version][1]).
La façon d'ignorer tous les répertoires appelés bin n'importe où en dessous du niveau courant dans une arborescence de répertoires est avec un fichier .gitignore
avec le motif :
bin/
Dans la page man
, il y a un exemple d'ignorer un répertoire appelé foo
en utilisant un motif analogue.
[1] : https://github.com/git/git/blob/master/Documentation/RelNotes/1.8.2.txt
Edit:
Si vous avez déjà des dossiers bin dans votre index git que vous ne souhaitez plus suivre, vous devez les supprimer explicitement. Git ne cessera pas de suivre les chemins qui sont déjà suivis juste parce qu'ils correspondent à un nouveau motif .gitignore
. Exécuter une suppression de dossier (rm) à partir de l'index uniquement (--cached) de manière récursive (-r). Exemple de ligne de commande pour le dossier bin racine :
git rm -r --cached bin
Le .gitignore
de votre rêve semble être :
bin/
au niveau supérieur.