Aggiornamento 2019:
Dal luglio 2019 , v'è stato un nuovo comando, che fa esattamente questo: git restore.
In git status, ora Git consiglia di utilizzare questo comando anziché git checkoutcome una volta.
Mentre questo comando può anche essere utilizzato per ripristinare l'albero di lavoro su un commit specifico o per ripristinare il contenuto dell'indice, per impostazione predefinita, l'albero di lavoro viene ripristinato allo stato nell'indice (cosa viene richiesto qui).
Quindi, per ripristinare i file corrispondenti a un pathspec (eliminando le loro modifiche non messe in scena), dovresti:
git restore <pathspec>
Ad esempio, per ripristinare tutte le modifiche non messe in scena nella directory corrente, è possibile eseguire:
git restore .
Se lo esegui dalla radice del progetto, ripristinerà tutte le modifiche non messe in scena nell'intero repository.
Si noti che, come nel caso di git checkout -- .(come sottolineato da Mariusz Nowak), questo annullerà solo le modifiche ai file tracciati da Git e non eliminerà alcun nuovo file non tracciato. Se si desidera annullare eventuali modifiche non organizzate, inclusi i nuovi file non monitorati, è possibile eseguire un ulteriore:
git clean -df
Presta molta attenzione con questo comando successivo, poiché potresti scartare i file di cui non hai intenzione di sbarazzarti.
Nota su git restore: poiché si tratta di un nuovo comando, la sua pagina man fornisce un avviso:
Questo comando è sperimentale. Il comportamento potrebbe cambiare.
Quindi è possibile che questa risposta possa diventare obsoleta se il comportamento dovesse cambiare in futuro. Potrebbe quindi essere saggio eseguire un veloce man git-restoreprima di usarlo.
git-cleanrimuove solo i file non tracciati