1328 votes

ignorer tout répertoire 'bin' sur un projet git

J'ai une structure de répertoire comme celle-ci :

.git/
.gitignore
main/
  ...
tools/
  ...
...

À l'intérieur des répertoires 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 selon moi) fonctionne parfaitement si je procède ainsi :

/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 sous Windows avec la dernière version de msysgit.

EDIT : une dernière chose, il y a des fichiers et des répertoires dont le nom contient la chaîne 'bin', je ne veux pas qu'ils soient ignorés :)

18 votes

Probablement que quelqu'un trouvera cela utile : si vous avez plusieurs dépôts et que chacun a le même fichier .gitignore, vous pouvez le mettre dans un emplacement "commun" et lancer > git config --global core.excludesfile ~/.gitignore_global Le dernier paramètre est le chemin d'accès à l'emplacement commun. P.S. Je suis nouveau dans git et je ne suis pas sûr que ce soit une recommandation de "meilleure pratique". Veuillez donc me faire savoir si vous ne voulez pas faire cela. Je vous remercie.

0 votes

En ** semble maintenant (mars 2013, git 1.8.2) officiellement documentée : voir ma réponse ci-dessous

2 votes

Si quelqu'un souhaite lire la version la plus récente de la page du manuel, voir gitignore(5) Page de manuel .

1955voto

Charles Bailey Points 244082

Avant la version 1.8.2, ** n'avait pas de signification particulière dans la .gitignore . Depuis la version 1.8.2, git prend en charge les éléments suivants ** pour signifier zéro ou plusieurs sous-répertoires (voir notes de mise à jour ).

La façon d'ignorer tous les répertoires appelés bin à un niveau inférieur au niveau actuel dans une arborescence de répertoires est d'utiliser l'option .gitignore avec le modèle :

bin/

Dans le cadre de la man La page de ce site présente un exemple d'ignorance d'un répertoire appelé foo à l'aide d'un modèle analogue.

Edita: Si vous avez déjà des dossiers bin dans votre index git que vous ne souhaitez plus suivre, vous devez les supprimer explicitement. Git n'arrêtera pas de suivre les chemins qui sont déjà suivis juste parce qu'ils correspondent maintenant à une nouvelle valeur de .gitignore modèle. Exécuter une suppression de dossier ( rm ) à partir de l'index uniquement ( -mise en cache ) de manière récurrente ( -r ). Exemple de ligne de commande pour le dossier bin racine :

git rm -r --cached bin

73 votes

A partir de git 1.8.2, git acceptera ** en .gitignore (source : 1.8.2 changelog )

16 votes

Est bin le même que celui de bin/ ?

30 votes

@Nisba, ils sont différents, bin ignorera les fichiers nommés bin, tandis que bin/ est pour les répertoires nommés bin

483voto

En .gitignore de votre rêve semble être :

bin/

au niveau supérieur.

1 votes

Le mettre dans gitignore_global

1 votes

@GAlexander, pourquoi vouloir ignorer globalement les répertoires bin/ ? Ils ont souvent un contenu versionné. Et l'ignorance globale n'affectera pas les autres utilisateurs du référentiel.

73voto

VonC Points 414372

En ** n'a jamais fonctionné correctement auparavant, mais depuis git 1.8.2 (8 mars 2013) Il semble qu'elle soit explicitement mentionnée et soutenue :

Les modèles de .gitignore y .gitattributes dossiers peut avoir `/` comme un modèle qui correspond à 0 ou plusieurs niveaux de sous-répertoire** .

Par exemple, " foo/**/bar " correspond " bar " dans " foo " lui-même ou dans un sous-répertoire de " foo ".

Dans votre cas, cela signifie que cette ligne pourrait désormais être prise en charge :

/main/**/bin/

48voto

wisbucky Points 829
[Bb]in/

correspond aux majuscules et aux minuscules

2 votes

[B]in/ pour être la seule majuscule

0 votes

Comment laisser seulement Bin ignorer et laisser bin commit dans git ? [B]in/ s'engageront tous deux Bin y bin .

6 votes

Ceci devrait suffire, @Gank : Bin/ !bin/

37voto

Cory Points 429

Je ne l'ai pas vu mentionné ici, mais il semble qu'il y ait une sensibilité à la casse. Une fois que j'ai changé pour /Bin, les fichiers ont été ignorés comme prévu.

3 votes

Il ne s'agit pas d'une réponse à la question initiale, qui portait explicitement sur les points suivants bin , pas Bin .

55 votes

Bien qu'il ne s'agisse pas d'une réponse, il permet d'être plus complet pour d'autres personnes cherchant à résoudre le même problème (moi-même, à l'instant).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X