J'ai une structure de répertoires comme celle-ci:
.git/
.gitignore
main/
...
tools/
...
...
À l'intérieur de 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 qu'il contient). J'ai essayé chacun de ces modèles en .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 motif (celui que je pense devrait fonctionner) fonctionne très bien si je fais cela:
/main/**/bin/**/*
Mais je ne veux pas avoir une entrée pour chaque répertoire de niveau supérieur et je ne veux pas avoir à modifier .gitignore chaque fois que j'en ajoute un nouveau.
C'est sur 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 qu'ils soient ignorés :)
**
syntaxe semble désormais (mars 2013, git 1.8.2) officiellement documentée: voir ma réponse ciRéponses:
Avant la version 1.8.2,
**
n'avait pas de signification particulière dans le.gitignore
. Depuis 1.8.2, git prend**
en charge zéro ou plusieurs sous-répertoires (voir les notes de publication ).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 modèle:Dans la
man
page, il y a un exemple d'ignorer un répertoire appelé enfoo
utilisant un modèle 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êtera pas de suivre les chemins qui sont déjà suivis simplement parce qu'ils correspondent maintenant à un nouveau
.gitignore
modèle. Exécutez une suppression de dossier ( rm ) de l'index uniquement ( --cached ) récursivement ( -r ). Exemple de ligne de commande pour le dossier racine bin:la source
**
dans les.gitignore
fichiers (source: changelog 1.8.2 )bin
la même chosebin/
?bin
fichiers nommés bin, tandis quebin/
pour les répertoires nommés binLe
.gitignore
rêve semble être:au niveau supérieur.
la source
Je pense qu'il vaut la peine de mentionner pour les débutants git:
Donc, si vous voulez ajouter pour ignorer certains répertoires de votre référentiel local (qui existent déjà) après avoir édité .gitignore, vous voulez l'exécuter sur votre répertoire racine
Il va essentiellement «rafraîchir» votre dépôt local et supprimer les fichiers ignorés.
Voir:
http://git-scm.com/docs/git-rm ,
https://help.github.com/articles/ignoring-files/
la source
git add -A
sur mes commits, puis-je l'utiliser à la place? et puis-je également remplacer le point par -A sur la première ligne?Le
**
n'a jamais fonctionné correctement auparavant, mais depuis git 1.8.2 (8 mars 2013) , il semble être explicitement mentionné et pris en charge:Dans votre cas, cela signifie que cette ligne peut désormais être prise en charge:
la source
correspond aux majuscules et aux minuscules
la source
[B]in/
être le seul majusculeBin
ignorer que le dossier et laisserbin
valider sur git?[B]in/
va à la fois commettreBin
etbin
.Bin/
!bin/
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.
la source
bin
, nonBin
.[Bb]in
résoudra le problème, mais ... Voici une liste plus complète de choses que vous devez ignorer (liste d'exemples par GitExtension):la source
Si vous recherchez un excellent
.gitignore
fichier global pour n'importe quelle solution Visual Studio (.NET) - je vous recommande d'utiliser celui-ci: https://github.com/github/gitignore/blob/master/VisualStudio.gitignoreAFAIK il a le plus complet
.gitignore
pour les projets .NET.la source
Étape 1: ajoutez le contenu suivant au fichier .gitignore.
Étape 2: assurez-vous de prendre effet
Si le problème persiste, c'est parce que les paramètres de .gitignore ne peuvent ignorer que les fichiers qui n'ont pas été suivis à l'origine . Si certains fichiers ont déjà été inclus dans le système de contrôle de version, la modification de .gitignore n'est pas valide. Pour résoudre complètement ce problème, vous devez ouvrir Git Bash ou la 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.
Ensuite, le problème sera complètement résolu.
la source
Littéralement, aucune des réponses n'a vraiment fonctionné pour moi; le seul qui a fonctionné pour moi était (sous Linux):
la source
bin
dans les sous-répertoires?À titre d'avis;
Si vous pensez que
.gitignore
cela ne fonctionne pas d'une manière (donc ajouté unfoo/*
dossier maisgit status
en montrant toujours le contenu du dossier comme modifié ou quelque chose comme ça), alors vous pouvez utiliser cette commande;git checkout -- foo/*
la source
pour 2.13.3 et les versions ultérieures, écrire uniquement bin dans votre fichier .gitignore devrait ignorer le bin et tous ses sous-répertoires et fichiers
la source
L'ajout de ** / bin / au fichier .gitignore a fait l'affaire pour moi (Remarque: le dossier bin n'a pas été ajouté à l'index).
la source
Si le motif à l'intérieur
.gitignore
se termine par une barre oblique/
, il ne trouvera une correspondance qu'avec un répertoire.En d'autres termes,
bin/
correspondra à un répertoirebin
et à des chemins en dessous, mais ne correspondra pas à un fichier normal ou à un lien symboliquebin
.Si le motif ne contient pas de barre oblique , comme dans
bin
Git, il le traite comme un motif de glob de shell (gourmand). Le mieux serait donc d’utiliser/bin
.bin
ne serait pas la meilleure solution pour ce problème particulier.la source
/
?Dans mon cas, l'encodage du fichier gitignore était problématique, vérifiez s'il est UTF-8
la source