68 votes

.gitignore ignore tous les fichiers puis autorise récursivement * .foo

Il y a déjà plusieurs questions semblables à ceci, mais aucune des réponses de travail pour moi.

Je veux de tout ignorer dans les dossiers ci-dessous mon référentiel à l'exception des fichiers avec *.foo

(Si quelqu'un se demande comment cela peut être justifié - je suis en train de faire un dépôt git pour tous mes "Logique" projets - logiciels de musique sur mac - mais je ne veux entreposer des fichiers de projet *.la logique)

Je vais le préciser, donc nous sommes tous sur la même plaque. Voici ce que je fais, à partir de zéro:

Programme d'installation:

mkdir temp
cd temp
mkdir testdir
cd testdir
touch include.foo
touch dontinclude.bad
cd..
git init
touch .gitignore

Collez cette dans .gitignore

# Ignore all
/*

# But not these files...
!.gitignore
!*.foo

git status

Et le seul sans traces de fichier est .gitignore

si j'ai tapé " git add .' - aucun changement, seulement .gitignore est vu et mes 2 fichiers sont ignorés.

Pourquoi ne pas ce travail et comment pouvez-vous modifier la procédure ci-dessus pour le faire fonctionner?

Voici le très semblable question où j'ai eu l' .gitignore fichier de. J'utilise git --version 1.7.7 (également essayé 1.7.3) - .gitignore pour ignorer tous les fichiers, puis, de manière récursive permet de fichiers d'un certain type

146voto

camh Points 13169

Votre problème est que le /* modèle au début assortit tous les fichiers et répertoires au niveau supérieur - y compris testdir , donc tout à l' intérieur testdir est ignoré.

Voici ce que vous voulez:

 # Ignore everything
*
# Don't ignore directories, so we can recurse into them
!*/
# Don't ignore .gitignore and *.foo files
!.gitignore
!*.foo
 

Lorsque vous effectuez un git add . avec cette configuration, vous devriez vous rendre compte que seuls les fichiers .gitignore et *.foo sont répertoriés en tant que modifications à valider.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X