Attenzione: non utilizzare il seguente comando a meno che non si desideri perdere il lavoro senza commit!
L'uso git reset
è stato spiegato, ma hai chiesto anche una spiegazione dei comandi inoltrati, quindi ecco:
git ls-files -z | xargs -0 rm -f
git diff --name-only --diff-filter=D -z | xargs -0 git rm --cached
Il comando git ls-files
elenca tutti i file che Git conosce. L'opzione -z
impone un formato specifico su di essi, il formato previsto da xargs -0
, che quindi rm -f
li invoca , il che significa rimuoverli senza verificare l'approvazione.
In altre parole, "elenca tutti i file che Git conosce e rimuovi la tua copia locale".
Quindi arriviamo a git diff
, che mostra i cambiamenti tra le diverse versioni di elementi che Git conosce. Questi possono essere cambiamenti tra alberi diversi, differenze tra copie locali e copie remote e così via.
Come usato qui, mostra le modifiche non messe in scena; i file che hai modificato ma non hai ancora eseguito il commit. L'opzione --name-only
indica che desideri solo i nomi dei file (completi) e --diff-filter=D
indica che sei interessato solo ai file eliminati. (Ehi, non abbiamo semplicemente cancellato un mucchio di roba?)
Questo viene quindi reindirizzato al file che xargs -0
abbiamo visto prima, che git rm --cached
li invoca , il che significa che vengono rimossi dalla cache, mentre l'albero di lavoro dovrebbe essere lasciato solo - tranne che hai appena rimosso tutti i file dall'albero di lavoro. Ora vengono rimossi anche dal tuo indice.
In altre parole, tutti i cambiamenti, messi in scena o non messi in scena, sono andati e il tuo albero di lavoro è vuoto. Fai un grido, controlla i tuoi file freschi dall'origine o dal remoto e ripeti il tuo lavoro. Maledici il sadico che scrisse queste righe infernali; Non ho idea del perché qualcuno voglia fare questo.
TL; DR: hai appena nascosto tutto; ricominciare e utilizzare git reset
da ora in poi.
rm -f
non è un comando git e non ha--cached
un'opzione. I tuoi file locali sono stati eliminati prima dell'esecuzione,git rm
quindi non credo che tu possa legittimamente incolparegit rm
nulla.