2011-08-29 6 views
65

Ho un file (config.php), che è già impegnato nel repository Git, ma voglio ignorarlo localmente, cioè voglio che quel file rimanga nel repository, ma costringi Git ad ignorare qualsiasi modifica ad esso.Come ignorare i file che si trovano nel repository?

Inserisco il file in .gitignore, ma è ancora contrassegnato come modificato e Git sta ancora tentando di eseguire il commit delle modifiche ad esso, ogni volta che commetto qualcosa. Qualche idea, cosa mi sto perdendo o sto sbagliando?

+0

per favore aggiungi il tuo file .gitignore - in questo modo potremmo vedere qualsiasi problema relativo. – Lars

+0

possibile duplicato di [Come ignorare un file che è già stato eseguito nel commit precedente?] (Http://stackoverflow.com/questions/625919/how-to-ignore-a-file-which-is-already-comitted -in-the-previous-commit) –

risposta

143

Se il file è ancora visualizzato nello stato, anche se è in .gitignore, assicurarsi che non sia già tracciato.

git rm --cached config.php 

Se si desidera semplicemente di ignorarlo a livello locale, si potrebbe anche fare è ignorato dalla git status:

git update-index --assume-unchanged config.php 
+1

OK grazie! Se unisco il mio ramo con un altro, questo file può creare qualche problema? – prcaen

+1

@ Nimbus147: non dovrebbe essere un problema, e qualsiasi modifica su quel file sarà ancora ignorata (cioè non aggiunta/impegnata). – VonC

+4

'assume-invariato' funziona alla grande, grazie –

-3

Una volta che un file è elencato in .gitignore non è possibile cambiarlo.

Quindi è possibile rimuovere il file dall'elenco in un commit, confermare le modifiche il successivo, quindi aggiungere nuovamente il file all'elenco di ignora in un terzo commit in seguito.

Quello che faccio in genere è dividere il file in due, uno consentito e che posso modificare, che include il secondo file se esiste, quindi gli sviluppatori possono apportare modifiche di configurazione nel file ignorato facoltativamente.

+1

"_Una volta che un file è elencato in .gitignore non puoi cambiarlo_" - puoi chiarire, cosa intendi? Ho ** un sacco di file ** in molti dei miei '.gitignore's e sto cambiando costantemente questi file! Questa è la prima volta, sento qualcuno dire, che una volta che aggiungo il file a ".gitignore", non posso cambiarlo. – trejder

+1

In realtà ha torto. Puoi cambiarli. Git semplicemente non li carica, o addirittura ti dà la possibilità di caricarli. – David

2

Se il file è già nel repository, e di conseguenza l'indice/area di sosta , quindi un aggiornamento a .gitignore non cambierà la situazione - Continuerebbe a essere commesso.

Per rimuovere il file dall'area di indice/gestione temporanea utilizzare git rm <file>.