Question 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 de la 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 ignorer tout ce qui se trouve en dessous). J'ai essayé 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 m'aider? Le premier modèle (celui que je pense devrait fonctionner) fonctionne très bien si je fais ceci:

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

Mais je ne veux pas avoir d'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.

C'est sur Windows en utilisant la dernière msysgit.

MODIFIER: 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 :)


977
2017-09-24 09:13


origine


Réponses:


Avant la version 1.8.2, ** n'a pas eu de signification particulière dans le .gitignore. À partir de 1.8.2 supports git ** signifier zéro ou plusieurs sous-répertoires (voir 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 avec un .gitignore fichier avec le motif:

bin/

dans le man page, voici un exemple d'ignorer un répertoire appelé foo en utilisant un modèle analogue.

Modifier:  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 à un nouveau .gitignore modèle. Exécuter un dossier remove (rm) de l'index seulement (--cache) recursivelly (-r). Exemple de ligne de commande pour le dossier bin racine:

git rm -r --cached bin

1472
2017-09-24 09:35



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

bin/

au niveau supérieur.


399
2017-09-24 09:16



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

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

git rm --cached

Donc, si vous voulez ajouter à ignorer certains répertoires dans votre dépôt local (qui existent déjà) après avoir modifié. Gitignore vous voulez l'exécuter sur votre répertoire racine

git rm --cached -r .
git add .

Il va fondamentalement «actualiser» votre repo local et déconnecter les fichiers ignorés.

Voir:

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

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


176
2018-05-13 08:54



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

Les modèles dans .gitignore et .gitattributes des dossiers peut avoir **/, comme un motif qui correspond à 0 ou plusieurs niveaux de sous-répertoire.

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

Dans votre cas, cela signifie que cette ligne pourrait maintenant être supportée:

/main/**/bin/

68
2018-04-23 09:20



[Bb]in/

correspond à la fois majuscules et minuscules


43
2017-08-30 05:32



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


30
2017-10-08 22:00



[Bb]inva résoudre le problème, mais ... Voici une liste plus complète de choses que vous devriez ignorer (liste d'exemples 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
2018-01-03 00:23



Si vous cherchez un bon global .gitignore fichier pour n'importe quelle 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.


16
2017-07-30 14:33



Comme un avis;

Si vous pensez à .gitignore ne fonctionne pas d'une certaine manière foo/* dossier en elle mais git status montrant toujours le (s) contenu (s) du dossier modifié (s) ou quelque chose comme ça), vous pouvez utiliser cette commande;

git checkout -- foo/*


5
2018-02-17 09:33



Pour les versions 2.13.3 et ultérieures, écrire juste bin dans votre fichier .gitignore devrait ignorer le bin et tous ses sous-répertoires et fichiers

poubelle


3
2017-08-03 16:41



Étape 1: ajoutez 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 persiste, c'est parce que les paramètres de .gitignore ne peut ignorer que les fichiers qui étaient à l'origine non suivi. 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 complètement ce problème, vous devez ouvrir Git Bash ou Console du gestionnaire de packages (voir capture d'écran ci-dessous) pour exécuter les commandes suivantes dans le dossier racine du référentiel.

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

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


3
2018-06-03 06:46