2010-03-19 11 views
52

Come aggiungere qualcosa allo .gitignore in modo che la corrispondenza non sia ricorsiva?Come aggiungere qualcosa a .gitignore in modo che la corrispondenza non sia ricorsiva?

Ad esempio, desidero ignorare la directory foo e il file bar.txt nella directory corrente, ma non quelli presenti nelle sottodirectory.

Ho provato questo per il mio file .gitignore:

foo/ 
bar.txt 

Ma purtroppo git vale questo modo ricorsivo, in modo che otherdir/bar.txt e otherdir/foo/ anche ottenere ignorato, che non è quello che voglio.

(Esiste un comando in git che mi mostra tutti i file ignorati, e fare riferimento al file .gitignore che è responsabile per il file che viene ignorato? Questo sarebbe utile per il debug.)

risposta

91

La soluzione è quella di mettere un leader barra sui .gitignore voci:

/foo/ 
/bar.txt 

(ho pensato che ho provato questo prima di pubblicare su StackOverflow, ma è chiaro che non avevo provato in modo corretto, in quanto questo funziona perfettamente.)

+0

È possibile che tu l'abbia provato e che alcuni spazi bianchi iniziali o finali abbiano causato problemi con .gitignore. Chissà, in entrambi i casi questa domanda mi ha aiutato lol –

11

Dal gitig nora manpage:

Un prefisso opzionale! che nega il modello; qualsiasi file di corrispondenza escluso da un modello precedente verrà nuovamente incluso. Se un pattern negativo corrisponde, questo sovrascriverà le origini dei pattern di precedenza inferiore.

Quindi !* come la prima riga del tuo .gitignore cancellerà tutti i modelli precedenti.

+0

Ok, ovviamente stavo facendo cose in un modo molto più complicato tutto il tempo:] +1 per la risposta alla barra principale, non posso ancora confermare. – hermannloose

+0

+1 in modo da poter upvote ora :) Inoltre, non sapevo di! prefisso. –

Problemi correlati