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

j'ai une structure de répertoire comme ceci:

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

dans main et tools, et tout autre répertoire, à n'importe quel niveau, il peut y avoir un répertoire 'bin', que je veux ignorer (et je veux ignorer tout ce qui s'y trouve). J'ai essayé de chacun de ces modèles dans .gitignore mais aucun d'eux 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, je pense, devrait fonctionner) fonctionne très bien si je fais cela:

/main/**/bin/**/*

mais je ne veux pas avoir d'entrée pour chaque répertoire de haut niveau et je ne veux pas avoir à modifier .gitignore à chaque fois que j'en ajouter un nouveau.

C'est sous Windows avec la dernière version de msysgit.

EDIT: encore une chose, il y a des fichiers et des répertoires de la sous-chaîne " bin " dans leurs noms, je ne veux pas de ceux qui doivent être ignorés :)

998
demandé sur ivanleoncz 2009-09-24 13:13:51

13 réponses

avant la version 1.8.2, ** n'avait pas de signification particulière dans le .gitignore . Depuis le 1.8.2, git supporte ** pour signifier zéro ou plus de sous-répertoires (voir notes de version ).

la façon d'ignorer tous les répertoires appelés bin n'importe où au-dessous du niveau actuel dans une arborescence de répertoires est avec un .gitignore fichier avec le motif:

bin/

dans la page man , il y a un exemple de ignorant un répertoire appelé foo à l'aide d'un schéma 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 ne cessera pas de suivre les chemins qui sont déjà suivis juste parce qu'ils correspondent à un nouveau modèle .gitignore . Exécuter un dossier supprimer ( rm ) de l'index seulement ( --cache ) recursively ( - r ). Exemple de ligne de commande pour le dossier root bin:

git rm -r --cached bin
1504
répondu CB Bailey 2018-02-20 21:29:26

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

bin/

au niveau supérieur.

410
répondu Michael Krelin - hacker 2009-09-24 13:08:02

je pense qu'il vaut la peine de mentionner pour git débutants:

Si vous avez déjà un fichier archivé, et que vous voulez l'ignorer, Git n'ignorera pas le fichier si vous ajoutez une règle plus tard . Dans ces cas, vous doit d'abord déverrouiller le fichier, en exécutant la commande suivante dans votre terminal:

git rm --cached

donc si vous voulez ajouter pour ignorer certains répertoires dans votre dépôt local (qui existe déjà) après édition .gitignore vous voulez exécuter ceci sur votre racine dir

git rm --cached -r .
git add .

il va fondamentalement 'rafraîchir' votre repo local et les fichiers ignorés de unstage.

voir:

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

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

181
répondu plancys 2015-05-13 09:03:38

le ** jamais travaillé correctement avant, mais depuis git 1.8.2 (mars, 8th 2013) , il semble être explicitement mentionné et soutenu:

les modèles dans .gitignore et .gitattributes fichiers peuvent avoir **/ , comme un modèle qui correspond à 0 ou plus niveaux du sous-répertoire .

E. g. " foo/**/bar "correspondances" bar "" foo " lui-même ou dans un sous-répertoire de " foo ".

dans votre cas, cela signifie que cette ligne peut maintenant être supportée:

/main/**/bin/
69
répondu VonC 2013-04-23 09:20:05
[Bb]in/

correspond à la fois en majuscules et en minuscules

44
répondu wisbucky 2013-08-30 05:32:42

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

31
répondu Cory 2009-10-08 22:00:31

[Bb]in résoudra le problème, mais... Voici une liste plus complète de choses que vous devriez 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*/
23
répondu Jaider 2015-01-03 00:23:22

si vous êtes à la recherche d'un grand fichier .gitignore pour toute solution Visual Studio ( .NET) - je vous recommande d'utiliser celui-ci: https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

autant que je sache, il a le plus complet .gitignore .Projets NET.

16
répondu Jochen van Wylick 2015-07-30 14:33:38

É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/

Étape 2: Assurez-vous de prendre effet

si le problème existe toujours, c'est parce que les paramètres dans .gitignore ne peut ignorer que les fichiers qui étaient à l'origine non suivis . Si certains fichiers ont déjà été inclus dans le système de contrôle de version, puis modifier .gitignore est invalide. Pour résoudre ce problème complètement, vous devez ouvrir la Console Git Bash ou Package Manager Console (voir la capture d'écran ci-dessous) pour exécuter les commandes suivantes dans le dossier racine du dépôt.

$ git rm -r --cached .
$ git add .
$ git commit -m 'Update .gitignore'

PM console Alors le problème sera complètement résolu.

6
répondu Bravo Yeung 2018-07-21 01:38:50

en tant qu'avis;

si vous pensez à .gitignore ne fonctionne pas d'une manière (donc ajouté foo/* dossier dans elle mais git status montrant toujours que le contenu du dossier(s) tel que modifié ou quelque chose comme ceci), alors vous pouvez utiliser cette commande;

git checkout -- foo/*

5
répondu K-Gun 2015-02-17 09:33:27

pour 2.13.3 et suivants, en écrivant juste bin dans votre .gitignore file devrait ignorer la bin et tous ses sous-répertoires et fichiers

bin

3
répondu Nikhil Karanjkar 2017-08-03 16:41:16

ajouter ** / bin / à la .le fichier gitignore a fait l'affaire pour moi (Note: le dossier bin n'a pas été ajouté à l'index).

0
répondu Dhwaneel 2017-05-14 12:58:39

littéralement aucune des réponses n'a vraiment fonctionné pour moi; la seule qui a fonctionné pour moi était (sur Linux):

**/bin
(yes without the / in the end)

git version 2.18.0 
0
répondu AnthonyC 2018-07-16 17:28:24