J'ai vu des questions similaires ( 1 , 2 et 3 ), mais je n'obtiens pas de solution appropriée de leur part.
Je dois ignorer tous les fichiers dans un dossier particulier, à l'exception d'un type de fichier spécifique. Le dossier est un sous-répertoire du chemin racine. Permettez-moi de nommer le dossier Resources
. Puisque je ne veux pas compliquer les choses, laissez-moi ignorer les fichiers sous tous les dossiers nommés Resources
où qu'ils se trouvent.
C'est la solution la plus courante (dans toutes les questions en double)
# Ignore everything
*
# Don't ignore directories, so we can recurse into them
!*/
# Don't ignore .gitignore
!.gitignore
# Now exclude our type
!*.foo
Le problème avec cette solution est qu'elle arrête le suivi des fichiers nouvellement ajoutés (puisqu'elle *
ignore tous les fichiers). Je ne veux pas continuer à exclure chaque type de fichier. Je veux un comportement normal où si un nouveau fichier est ajouté,git status
montre.
J'ai enfin une solution ici . La solution est d'ajouter un autre .gitignore
fichier dansResources
dossier. Cela fonctionne correctement.
Puis-je réaliser la même chose avec un seul fichier ignoré? Je trouve que le fait d'avoir de nombreux fichiers ignorés dans différents répertoires est un peu maladroit.
C'est ce que j'essaye de réaliser:
# Ignore everything under Resources folder, not elsewhere
Resources
# Don't ignore directories, so we can recurse into them
!*Resources/
# Now exclude our type
!*.foo
Mais cela donne le résultat opposé. Il ignore les *.foo
types et suit les autres fichiers.
DirectoryName1/** DirectoryName1/**/*
pour chacun d'eux. Premièrement, supprimez les répertoires, mais vous avez besoin du second pour supprimer tous les types de fichiers.La meilleure réponse est d'ajouter un fichier Resources / .gitignore sous Ressources contenant:
Si vous ne souhaitez pas ou ne pouvez pas ajouter ce fichier .gitignore, il existe une solution inélégante:
Vous devrez modifier ce modèle si vous ajoutez des répertoires plus profonds que spécifié.
la source
Cela peut sembler stupide, mais vérifiez si vous n'avez pas déjà ajouté le dossier / les fichiers que vous essayez d'ignorer à l'index auparavant. Si vous l'avez fait, peu importe ce que vous mettez dans votre fichier .gitignore, les dossiers / fichiers seront toujours mis en scène.
la source
git rm --cached <path to files>
pour effacer ces fichiers ignorés de git tout en les laissant dans le système de fichiers.Soit je le fais mal, soit la réponse acceptée ne fonctionne plus avec le git actuel.
J'ai en fait trouvé la bonne solution et l'ai publiée sous presque la même question ici . Pour plus de détails, allez-y.
Solution:
la source
!/Resources/**/
était crucial pour que git n'ignore pas les sous-répertoires.