2012-04-24 11 views
23

Ho un ipotetico repository Mercurial su disco. Sto principalmente creando una nuova funzionalità, quando mi rendo conto di aver creato un disastro completo del file su cui sto lavorando e di voler ripristinare il file al suo ultimo stato di commit.Come posso ripristinare un file in stato 'ultimo controllo' in Mercurial?

Posso usare hg update per aggiornare la copia di lavoro dal repository, ma che aggiorna ogni file.

Esiste un comando mercurial che può aggiornare solo un singolo file?

risposta

28

Esiste un comando mercurial per ripristinare i file. hg revert questo dovrebbe annullare eventuali modifiche. Puoi anche passare un nome file ad esempio, ad esempio hg revert fileName.

3

Credo che sia possibile digitare hg revert /path/to/file/<file name> e aggiornerà il file.

+1

No, questo è Git che ha questo comportamento strano per 'git checkout' (in Mercurial,' hg cassa 'è un alias per' hg update'). –

+0

Hai ragione, grazie per avermi corretto. – Kodi

+0

@Vari La tua risposta è sbagliata? Se è così, cancella. –

11

hg revert fileName ripristinerà il file alla revisione in cui ci si trova. Se si desidera annullare tutte le modifiche è possibile eseguire hg revert --all.

Entrambi questi file producono fileName.orig in modo da poter mantenere le modifiche che si desidera ripristinare per ogni evenienza. Se si desidera ripristinare il file e non hanno tutti i file .orig è possibile aggiungere l'opzione -C: hg revert fileName -C hg revert --all -C

+0

Trovo che sia meglio aggiungere '* .orig' al mio file' .hgignore' e quindi lasciare in giro i file '.orig'. Forse avrò bisogno di loro un giorno :) Se ti infastidiscono, puoi usare l'estensione di eliminazione per pulirli. –

Problemi correlati