Comment puis-je ajouter quelque chose à l'.gitignore pour que le match ne soit pas récursif?

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 courant, mais pas ceux qui existent dans les sous-répertoires.

J'ai essayé ceci pour mon fichier .gitignore:

foo/
bar.txt

Mais malheureusement, git applique cela récursivement, de sorte que otherdir/bar.txt et otherdir/foo/ sont également ignorés, ce qui n'est pas ce que je veux.

(y a-t-il une commande dans git qui me montre tous les fichiers ignorés, et la référence le fichier .gitignore responsable de l'ignorance du fichier? Cela serait utile pour le débogage.)

53
demandé sur pauldoo 2010-03-19 14:12:58

2 réponses

La solution consiste à placer une barre oblique sur les entrées .gitignore:

/foo/
/bar.txt

(je pensais avoir essayé ceci avant de poster sur StackOverflow, mais clairement Je ne l'avais pas essayé correctement, car cela fonctionne parfaitement.)

92
répondu pauldoo 2010-03-19 11:22:03

De la page de manuel gitignore:

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

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

11
répondu hermannloose 2010-03-19 11:24:00