Come rimuovere un file dall'indice (= area di gestione temporanea = cache) senza rimuoverlo dal file system?
Come rimuovere un file dall'indice (= area di gestione temporanea = cache) senza rimuoverlo dal file system?
Risposte:
Tu vuoi:
git rm --cached [file]
Se si omette l' --cached
opzione, verrà eliminata anche dall'albero di lavoro. git rm
è leggermente più sicuro di git reset
, perché verrai avvisato se il contenuto messo in scena non corrisponde alla punta del ramo o al file sul disco. (In caso contrario, è necessario aggiungere --force
.)
git rm --cached
per rimuoverli dal repository, aggiungere i file o le directory pertinenti a .gitignore, stage e commit come di consueto. Saranno andati via dal repository ma rimarranno intatti nel tuo albero locale e non li controllerai di nuovo accidentalmente.
Questo dovrebbe mettere in scena un <file> per te (senza rimuovere o modificare in altro modo il file):
git reset <file>
HEAD
.
HEAD
!
git reset HEAD <file>
per rimuovere un determinato file dall'indice.
e
git reset HEAD
per rimuovere tutti i file indicizzati.
A seconda del flusso di lavoro, questo potrebbe essere il tipo di cose di cui hai bisogno raramente abbastanza da avere poco senso nel cercare di trovare una soluzione da riga di comando (a meno che non ti capiti di lavorare senza un'interfaccia grafica per qualche motivo).
Basta usare uno degli strumenti basati sulla GUI che supportano la gestione degli indici, ad esempio:
git gui
<- usa il framework per finestre Tk - stile simile a gitk
git cola
<- un'interfaccia grafica più modernaQuesti ti consentono di spostare i file dentro e fuori dall'indice puntando e facendo clic. Hanno anche il supporto per la selezione e lo spostamento di parti di un file (singole modifiche) da e verso l'indice.
Che ne dici di una prospettiva diversa: se sbagli mentre usi uno dei comandi suggeriti, piuttosto criptici,:
git rm --cached [file]
git reset HEAD <file>
... hai una reale possibilità di perdere dati - o almeno renderlo difficile da trovare. A meno che non sia necessario farlo con una frequenza molto elevata, è probabile che l'utilizzo di uno strumento GUI sia più sicuro .
Sulla base dei commenti e dei voti, ho capito che molte persone usano l'indice continuamente. Io non. Ecco come:
git commit -a
git commit (list of files)
git commit -a
quindi modifica tramitegit gui
git difftool --dir-diff --tool=meld
git commit -a
. Quando stavo rispondendo a questa domanda, era perché avevo fatto (un esotico) " pick inverso alla ciliegia " che metteva i file nell'indice per te, ma volevo modificare un file prima di impegnarmi. Ho rimosso il file dall'indice mentre l'ho modificato in modo che le differenze funzionassero come sono abituato.
rm
immediatamente, ma ho pensato che il cambio di ramo non avrebbe ucciso la cartella ignorata . ma ... uso lo strumento "gui based" di github che è abbastanza buono per me e supporto un po 'di gestione dell'indice, tranne che non supporta questo. quindi cosa devo usare 2 gui per un uso limitato? non riesco ancora a concordare con la risposta.