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 checkout
come 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-restore
prima di usarlo.
git-clean
rimuove solo i file non tracciati