ignorer tout répertoire ‘bin’ sur un projet git

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

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

A l’intérieur du main et des outils, 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 tout ignorer). J’ai essayé chacun de ces motifs 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 m’aider? Le premier modèle (celui que je pense devrait fonctionner) fonctionne correctement 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 est sous Windows en utilisant le dernier msysgit.

EDIT: encore une chose, il y a des fichiers et des répertoires qui ont la sous-chaîne ‘bin’ dans leurs noms, je ne veux pas que ceux-ci soient ignorés 🙂

Avant la version 1.8.2, ** n’avait aucune signification particulière dans le .gitignore . À partir de 1.8.2, git prend en charge ** pour signifier zéro ou plusieurs sous-répertoires (voir les notes de version ).

La façon d’ignorer tous les répertoires appelés bin n’importe où en dessous du niveau actuel dans une arborescence de répertoires est d’ .gitignore un fichier .gitignore avec le modèle:

 bin/ 

Dans la page de manuel, il y a un exemple d’ignorance d’un répertoire appelé foo utilisant un motif analogue.

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 n’arrête pas de suivre les chemins déjà suivis simplement parce qu’ils correspondent à un nouveau modèle .gitignore . Exécutez un dossier remove ( rm ) à partir de l’index uniquement ( –cached ) recursivelly ( -r ). Exemple de ligne de commande pour le dossier racine bin:

 git rm -r --cached bin 

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

 bin/ 

au plus haut niveau.

Je pense que cela vaut la peine de mentionner pour les débutants de git:

Si vous avez déjà un fichier archivé et que vous souhaitez l’ignorer, Git n’ignorera pas le fichier si vous ajoutez une règle ultérieurement . Dans ces cas, vous devez tout d’abord désélectionner le fichier en exécutant la commande suivante dans votre terminal:

git rm --cached

Donc, si vous voulez append à ignorer certains répertoires de votre repository local (qui existent déjà) après avoir édité .gitignore, vous voulez l’exécuter sur votre répertoire racine

 git rm --cached -r . git add . 

Il va essentiellement “rafraîchir” votre repo local et désinstaller les fichiers ignorés.

Voir:

http://git-scm.com/docs/git-rm ,

https://help.github.com/articles/ignoring-files/

Le ** n’a jamais fonctionné correctement avant, mais depuis le git 1.8.2 (8 mars 2013) , il semble être explicitement mentionné et supporté:

Les modèles dans les fichiers .gitignore et .gitatsortingbutes peuvent avoir **/ , en tant que modèle correspondant à 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 peut maintenant être prise en charge:

 /main/**/bin/ 
 [Bb]in/ 

correspond aux majuscules et aux minuscules

Je ne l’ai pas vu mentionné ici, mais cela semble être sensible à la casse. Une fois que je suis passé à / Bin, les fichiers ont été ignorés comme prévu.

[Bb]in va résoudre le problème, mais … Voici une liste plus complète de choses que vous devez ignorer (exemple de liste par GitExtension):

 #ignore thumbnails created by windows Thumbs.db #Ignore files build by Visual Studio *.user *.aps *.pch *.vspscc *_i.c *_p.c *.ncb *.suo *.bak *.cache *.ilk *.log [Bb]in [Dd]ebug*/ *.sbr obj/ [Rr]elease*/ _ReSharper*/ 

Si vous recherchez un fichier .gitignore global pour toute solution Visual Studio (.NET) – je vous recommande d’utiliser celui-ci: https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

AFAIK il a le plus complet .gitignore pour les projets .NET.

Comme un avis

Si vous pensez que .gitignore ne fonctionne pas d’une certaine manière (donc ajout du dossier foo/* mais git status montrant toujours le contenu de ce dossier comme modifié), vous pouvez utiliser cette commande;

git checkout -- foo/*

Étape 1: Ajouter le contenu suivant au fichier .gitignore.

 # User-specific files *.suo *.user *.userosscache *.sln.docstates # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ bld/ [Bb]in/ [Oo]bj/ # Visual Studio 2015 cache/options directory .vs/ 

pour 2.13.3 et les versions ultérieures, écrire simplement bin dans votre fichier .gitignore doit ignorer le répertoire bin et tous ses sous-répertoires et fichiers.

poubelle

Ajouter ** / bin / au fichier .gitignore a fait l’affaire (Note: le dossier bin n’a pas été ajouté à l’index).

Littéralement aucune des réponses n’a réellement fonctionné pour moi; le seul qui a fonctionné pour moi était (sous Linux):

 **/bin (yes without the / in the end) git version 2.18.0