2012-08-14 16 views
9

Ho visto molti approcci diversi per scartare le modifiche/tornare a un commit precedente utilizzando Git. Di solito riesco a capire quale funziona per la mia situazione, ma nel processo sono stato abbastanza confuso dai diversi approcci. Più di recente stavo cercando di annullare alcune rinomine di file e non importa quanto duramente ho provato a git checkout le vecchie versioni dei file non riuscivo ancora a recuperare i miei vecchi file.Giusto modo per scartare le modifiche in Git

Sto cercando un chiarimento su quale approccio utilizzare e perché. Ecco la mia comprensione di alcuni approcci. Mi rendo conto che la risposta potrebbe essere molto contestuale, ma mi piacerebbe provare e risolvere i contesti che richiedono quali approcci.


1) git checkout -- .

  • Utilizzato alla cassa l'ultima versione del file, sovrascriverà i vecchi file, ma non influirà eliminato, rinominato, o nuovi file.

2) git stash save --keep-index seguito da git stash drop

  • stashes file non impegnati, poi scende del tutto. Un buon approccio se hai commesso modifiche che vuoi mantenere e modifiche non inviate/non modificate che vuoi eliminare.

3) git reset --hard

  • spazza via tutto dall'ultimo commit, tra cui file di rinomina, cancellazioni e aggiunte.

Questa è la mia attuale comprensione delle mie opzioni. Ci sono cambiamenti che vorresti apportare alle mie spiegazioni? Sono anche insicuro quando vorrei usare un git revert al posto dei comandi di cui sopra.

messaggi Fonte:

risposta

9
git stash -u 

è il modo preferito. Non lasciar cadere. Non verranno spinti. Nel caso in cui hai fatto zapping qualcosa che hai scoperto è importante, puoi riprenderli.

Le tue altre scelte sono distruttive.

Revert aggiunge un nuovo commit alla cronologia che applica l'opposto di una patch introdotta da un commit. Le tue scelte qui sono per quello che vuoi fare con i cambiamenti nel tuo worktree che non fanno ancora parte della storia. Il ripristino è per le modifiche apportate che fanno parte della cronologia.

+0

Che cosa fa? Non voglio davvero riempire il mio stack con codice di cui non ho bisogno. –

+0

Non preoccuparti di riempire la tua scorta. '-u' nasconde i file non tracciati oltre a quelli tracciati. Permette di comportarsi come fa reset. –