2010-03-19 9 views
52

Comment ajouter quelque chose au .gitignore afin que la correspondance ne soit pas récursive?Comment ajouter quelque chose au .gitignore pour que la correspondance ne soit pas récursive?

Par exemple, je souhaite ignorer le répertoire foo et le fichier bar.txt dans le répertoire en cours, mais pas ceux qui existent dans les sous-répertoires.

J'ai essayé pour mon .gitignore fichier:

foo/ 
bar.txt 

Mais malheureusement git applique cette récursive, de sorte que otherdir/bar.txt et otherdir/foo/ obtenir aussi passer à côté, ce qui est pas ce que je veux.

(Y at-il une commande git qui me montre tous les fichiers ignorés, et référencer le fichier .gitignore qui est responsable du dossier étant ignoré? Ce serait utile pour le débogage.)

Répondre

91

La solution est de placer un barre oblique sur les .gitignore entrées:

/foo/ 
/bar.txt 

(je pensais que j'ai essayé cela avant de poster sur StackOverflow, mais il est clair que je ne l'avais pas essayé correctement, comme cela fonctionne parfaitement.)

+0

Il est possible que vous ayez essayé ceci, et que vous ayez des espaces avant/arrière quelque part qui causent des problèmes avec .gitignore. Qui sait, de toute façon cette question m'a aidé lol –

11

de l'gitig page de manuel:

Un préfixe optionnel! ce qui nie le modèle; tout fichier correspondant exclu par un motif précédent sera à nouveau inclus. Si un motif inversé correspond, cela remplacera les sources de modèles de priorité inférieure.

Donc !* comme première ligne dans votre .gitignore effacera tous les modèles précédents.

+0

Ok, évidemment, je faisais des choses d'une manière beaucoup plus compliquée tout le temps:] +1 pour la réponse à la barre oblique, ne peut pas encore l'emporter. – hermannloose

+0

+1 de sorte que vous pouvez upvote maintenant :) En outre, je ne savais pas à propos de la! préfixe. –