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-fileselenca tutti i file che Git conosce. L'opzione -zimpone un formato specifico su di essi, il formato previsto da xargs -0, che quindi rm -fli 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-onlyindica che desideri solo i nomi dei file (completi) e --diff-filter=Dindica che sei interessato solo ai file eliminati. (Ehi, non abbiamo semplicemente cancellato un mucchio di roba?)
Questo viene quindi reindirizzato al file che xargs -0abbiamo visto prima, che git rm --cachedli 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 resetda ora in poi.
rm -fnon è un comando git e non ha--cachedun'opzione. I tuoi file locali sono stati eliminati prima dell'esecuzione,git rmquindi non credo che tu possa legittimamente incolparegit rmnulla.