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 :)
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
Le .gitignore
de votre rêve semble être:
bin/
au niveau supérieur.
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:
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/
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.
[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*/
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.
É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'
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/*
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
ajouter ** / bin / à la .le fichier gitignore a fait l'affaire pour moi (Note: le dossier bin n'a pas été ajouté à l'index).
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