Git ignore et cible Maven

Tout le monde sait s’il est possible d’ignorer toutes les instances d’un répertoire particulier dans une structure de fichiers gérée par git.

Je cherche à exclure tous les dossiers «cibles» dans un projet Maven avec un certain nombre de sous-modules. Je sais que je peux explicitement exclure chacun d’eux dans un .gitignore de niveau supérieur, mais j’aimerais vraiment pouvoir spécifier un pattern comme ** / target / * pour qu’il ignore automatiquement l’instance dans les sous-répertoires?

Est-ce possible?

Il est possible d’utiliser des patterns dans un fichier .gitignore . Voir la page de manuel de gitignore . Le modèle */target/* devrait ignorer tout répertoire nommé target et tout ce qui se trouve sous lui. Ou vous pouvez essayer */target/** d’ignorer tout ce qui est sous la cible.

Le fichier .gitignore du répertoire racine s’applique à tous les sous-répertoires. Le mien ressemble à ceci:

 .classpath .project .settings/ target/ 

Ceci est dans un projet multi-module maven. Tous les sous-modules sont importés en tant que projets individuels d’éclipse à l’aide de m2eclipse. Je n’ai pas d’autres fichiers .gitignore . En effet, si vous regardez dans la page de manuel de gitignore :

Motifs lus à partir d’un fichier .gitignore dans le même répertoire que le chemin ou dans tout répertoire parent

Donc cela devrait fonctionner pour vous.

Comme indiqué dans les commentaires d’Abhijeet, vous pouvez simplement append une ligne comme:

 /target/** 

pour exclure le fichier dans le dossier \.git\info\ .

Ensuite, si vous voulez vous débarrasser de ce dossier target dans votre repo distant, vous devrez d’abord supprimer manuellement ce dossier de votre référentiel local, valider puis le pousser. C’est parce que git vous montrera le contenu d’un dossier cible tel que modifié au début.