2011-12-19 11 views
7

Dopo il mio ultimo commit ho scritto un po 'di codice. Prima di riprendere, ho eseguito hg add. Essa ha aggiunto alcuni file non ero interessato a, così mi sono imbattutoI miei cambiamenti sono andati dopo "hg revert"?

$ hg revert --all 

pensare che tutti i file aggiunti sarebbero andati via. Sono andati via, ma ho anche ripristinato tutto il codice scritto dall'ultimo commit, il che significa che è stata persa una tonnellata di lavoro! Quali sono le mie opzioni?

risposta

12

Quando si hg revert un file (o --all file), Mercurial salva un backup del file con un altro nome. Questo per rendere più difficile per voi perdere lavoro. Se il file è stato chiamato foo, si avrà un foo.orig con la versione originale.

È possibile utilizzare

$ hg status --all --include "**.orig" 

per vedere tutti i file .orig nella copia di lavoro. Sposta quelli di cui hai bisogno, ri-aggiungili e commetti.

Su una nota correlata: le persone a volte aggiungono il flag --no-backup alla loro sezione [defaults] per eliminare i file .orig Dispersione mercuriale. Penso che questo davvero una cattiva idea ... basta ignorare i file .orig invece con l'aggiunta di

syntax: glob 
*.orig 

al file .hgignore. Questo è molto più sicuro e un giorno sarai felice di avere questi file .orig in giro :-)

+3

grazie signore. oh e anche tu martin :-) – Rahul

+0

Quando "muovi quelli che ti servono, riaggiungi li e li impegni" dovresti rinominare foo.txt.orig a foo.txt manualmente per ogni file, o c'è un modo migliore? ? –

Problemi correlati