2015-10-30 15 views
9

Non capisco la differenza tra git rm --cached e git update-index --assume-unchanged.Differenza tra `git rm --cached` e` git update-index --assume-unchanged`?

Sono consapevole che git rm --cached <file> rimuoverà un file dall'area di gestione temporanea.

E, so che anche git update-index --assume-unchanged <file> fa questo.

Ho anche visto entrambi i comandi offerti come suggerimenti per domande simili qui su SO.

C'è un altro effetto di uno di questi due comandi che li rende diversi?

+1

Si prega di rivedere la risposta data sotto, grazie. –

+0

scusate, era afk per un giorno. – Hunle

risposta

4

Il comando

git rm --cached <file> 

è usato per i file untrack in un ramo Git. Questo comando rimuoverà il file dall'area di gestione temporanea e anche il rimuoverà il file dal repository al prossimo commit.

Il comando

git update-index --assume-unchanged <file> 

sarà anche rendere il file sparire dall'area di gestione temporanea. Tuttavia, questo comando è diverso perché indica a Git solo temporaneamente ignorare eventuali modifiche apportate allo file. Quindi quando si commette il file rimarrà una parte del repository presumendo che fosse già lì. Quando si desidera Git per visualizzare le modifiche apportate al nuovo il file, è possibile eseguire questo:

git update-index --no-assume-unchanged <file> 

Ciò restituirà il file per l'area di sosta, se fosse lì quando è stato eseguito in precedenza assume-unchanged.

Qui è un link per git rm --cached e qui è un link per git update-index --assume-unchanged.

+0

Formulazione sfortunata: 'git update-index --assume-unchanged' non * rimuove * la voce del file dall'indice, ma bloccherà Git controllando questa voce con il file corrispondente sul filesystem. Credo che tu possieda solo qualche parola in questo senso, ma è importante ;-) Per rendere più chiaro il mio punto, l'indice inizialmente (cioè, subito dopo 'git read-tree')" contiene "tutti i file di l'albero-ish che era appena stato letto. Quindi rendere Git "chiudere un occhio" su una voce di indice non equivale effettivamente * rimuovendolo *. – kostix

+0

Hm. Vedo il tuo punto ed è importante. grazie. Domanda: quindi, se dimentico di eseguire il comando 'git update-index --no-assume-invariato ', vuol dire che continuerà a ignorare il mio file finché non mi ricorderò di farlo? Se è così, questo mi rende un po 'nervoso all'utilizzo di questo comando. – Hunle

+0

Inoltre, nella pagina 'git rm --help', non ho visto nulla di menzionato sulla rimozione del file dal repository. Hai una fonte per supportare questo, @TimBiegeleisen? – Hunle