2013-10-18 14 views
5

Sto tentando di ignorare TUTTI i file tranne il file .htaccess all'interno della directory www.Avere .gitignore per NON ignorare un file .htaccess nella directory di livello superiore

ho questo:

# Ignore everything in this directory 
* 
# Except this file 
!.gitignore 
!/www/.htaccess 

e ho anche provato questo:

# Ignore everything in this directory 
* 
# Except this file 
!.gitignore 
!www/.htaccess 

Quando eseguo git status non vedo .htaccess ad essere un file aggiunto. Ho provato a commettere il file .gitignore. Ancora niente. Mi manca qualcosa di ovvio, no?

Aggiornamento

Ho anche provato questi:

# Ignore everything in this directory 
* 
*/\.htaccess 

# Except these files 
!.gitignore 
!www/\.htaccess 

e

# Ignore everything in this directory 
* 
*/.htaccess 

# Except these files 
!.gitignore 
!www/.htaccess 

risposta

9

Ho provato alcuni s molti passaggi sulla mia macchina, provali e controlla se funzionano per te.

cd ~/Desktop/test 
mkdir www && touch .gitignore www/.gitkeep www/.htaccess www/file1 www/file2 
git init && git add www/.gitkeep && git commit -m "gitkeep to make www trackable" 

Facendo git status sarà ora mostrerà

.gitignore 
www/.htaccess 
www/file1 
www/file2 

Ora, Nel file .gitignore, aggiungere le seguenti due voci

www/* 
!www/.htaccess 

Facendo un git status ora mostra

.gitignore 
www/.htaccess 

È ora possibile aggiungere questi due file utilizzando git add . e confermarli.

Inoltre, una volta che siete convinti che detti comandi funzionano, è possibile rimuovere il www/.gitkeep ho generato nel mio esempio (E 'stato aggiunto per mantenere www tracciabile, git non le cartelle di versione) e aggiungere www/.htaccess invece di ridurre l'overhead di file ridondanti.

1

Hai provato:

*/.htaccess 
!www/.htaccess 
+0

provato. commesso .gitignore e ancora non vedendo .htaccess in arrivo – phirschybar

2

Nella mia esperienza la soluzione di seguito è molto più semplice della risposta accettata.

Aggiungere il seguente al file .gitignore

www/* 
!www/.htaccess 

Ora si è fatto!

La spiegazione

Per rompere il basso www/* ignora tutti gli occupanti della cartella "www", ma non la directory stessa, come il comando /www avrebbe fatto.

Successivamente dichiariamo la nostra eccezione esplicita !www/.htaccess come avete tentato nella vostra domanda.

Sono necessarie solo due righe nel file .gitignore e funziona come un incantesimo.

+0

Grazie, questo era il problema! 'www' e'! www/.htaccess' significava che a Git era stato detto di ignorare l'intera cartella "www", quindi non avrebbe mai visto il file .htaccess anche se lo avessi permesso. Cambiando la prima istruzione in 'www/*' (che significa "traccia la cartella www stessa, ma non nessuno dei file al suo interno"), ha permesso la seconda istruzione ('! Www/.htaccess') per trovare il file htaccess . Per fare ciò, ho dovuto fare l'equivalente di 'git add www' per iniziare a tracciare la cartella, e poi ho visto l'htaccess comparire nella staging (e nessun altro file, proprio come intendevo). – buggy3

Problemi correlati