Ho visto domande simili ( 1 , 2 e 3 ), ma non ottengo una soluzione adeguata.
Devo ignorare tutti i file in una particolare cartella tranne un tipo di file specifico. La cartella è una sottodirectory per il percorso principale. Fammi nominare la cartella Resources. Dal momento che non voglio complicare le cose, lasciami ignorare i file in tutte le cartelle denominate Resourcesovunque si trovino.
Questa è la soluzione più comune (in tutte le domande duplicate)
# Ignore everything
*
# Don't ignore directories, so we can recurse into them
!*/
# Don't ignore .gitignore
!.gitignore
# Now exclude our type
!*.foo
Il problema con questa soluzione è che smette di tenere traccia dei file appena aggiunti (poiché *ignora tutti i file). Non voglio continuare a escludere ogni tipo di file. Voglio un comportamento normale in cui se viene aggiunto un nuovo file, lo git statusmostra.
Finalmente ho una soluzione qui . La soluzione è aggiungere un altro .gitignorefile nella Resourcescartella. Funziona correttamente.
Posso ottenere lo stesso risultato con un file ignorato? Trovo un po 'goffo avere molti file ignorati in directory diverse.
Questo è ciò che sto cercando di ottenere:
# Ignore everything under Resources folder, not elsewhere
Resources
# Don't ignore directories, so we can recurse into them
!*Resources/
# Now exclude our type
!*.foo
Ma questo dà l'output opposto. Ignora i *.footipi e tiene traccia di altri file.
DirectoryName1/** DirectoryName1/**/*per ciascuna di esse. Per prima cosa rimuovere le directory ma è necessario il secondo per rimuovere tutti i tipi di file.