2010-08-11 34 views
20

Estoy trabajando en un servidor en vivo. He actualizado para dar propina y ha causado problemas: necesito volver a un conjunto de cambios particular (388) donde las cosas estaban bien.Mercurial: ¿cómo puedo volver a una revisión en particular?

No tengo cambios de ningún valor en el servidor, el conjunto de cambios local no importa en absoluto. De hecho, yo realmente quiero matar cualquier cambio accidental local o se funde para no confundir las cosas.

¿Cómo puedo volver a un conjunto de cambios particular y matar cualquier cambio local? ¿Tiene algo que ver con:

hg revert 

---- ACTUALIZACIÓN ---

Para aclarar, lo que me gustaría hacer es primero que todo volverá a localmente conjunto de cambios 388, y luego asegurarse de que mi representante Repo está en un estado tal que cuando lo hago

hg status 

No obtengo salida. De lo contrario, tengo la desagradable sensación de que la próxima vez que saque la punta, habrá conflictos con los que lidiar, lo cual quiero evitar, porque los cambios locales no tienen ningún valor.

---- ACTUALIZACIÓN ---

Para cualquier otra persona en esta situación, lo que finalmente lo arregló para mí fue:

rm -rf <repo_dir> 
hg clone http://repository 
hg update -r 388 

que matará a todos los cambios locales, por lo que proceder con cautela (pero eso es lo que quería en este caso).

+0

Un consejo: echa un vistazo a 'hg help revert' para obtener documentación sobre revertir. Esto también funciona con otros comandos ('hg help [nombre del comando aquí]'). – derekerdmann

Respuesta

11
server: 
- .. 
- rev 386 
- rev 387 
- rev 388 
- rev 389 

clone to production 

-- testing stuff, it doesn't work! 
-- panic! 
-- rev 390 (in panic) 
-- rev 391 (in panic) 
-- cool down, thinking, need to go back to 388 
-- one way: hg update -C -rev 388 (to keep 390, 391) 
-- other way: rm -rf dir (to discard 390, 391) 
-- hg clone http://server/hg 
-- cd dir 
-- hg update 388 
-- testing, now works 

También hay una maravilloso Purge extension. Muy sólido, elimina todos los archivos sin seguimiento del directorio de trabajo.

+0

Ah, entonces, para lograr el estado que describo en la actualización anterior, ¿necesito eliminar todos los archivos locales o necesito usar la extensión Purgar? tiene sentido ... – AP257

+0

Se corrigió esto usando rm -rf dir y hg clone/hg update 388, como sugirió. Pensé que estaba claro que quería descartar todo, pero aparentemente no de los otros comentarios ...! ¡Gracias por tu ayuda! – AP257

17

Simplemente use el siguiente comando para obtener una revisión.

hg revert -r REV 

Está en conflicto con --all.

Para eliminar todos los cambios locales, --todo debería funcionar.

hg revert --all 

No utilice rollback. Es un procedimiento irreversible, por lo que debe usarse con cuidado.

EDITAR

Se puede actualizar con la opción --clean. Eso descartará cualquier cambio no confirmado. Y luego actualiza a algún conjunto de cambios.

+0

hg revertir --todo -r 388 trabajado - ¡gracias! Sin embargo, el estado de hg todavía muestra un montón de diferencias entre el repositorio local y el remoto, debido a todo el ataque y el pánico que hice. ¿Hay alguna manera de eliminar todos los conjuntos de cambios locales? – AP257

+0

No puede eliminar conjuntos de cambios locales. Cloné el informe del servidor y luego actualicé la actualización 388 a la revisión deseada. – Valentin

+1

@ AP257: no necesita ** revertir **. Necesita ** actualizar ** como @jk respondió – zerkms

5

No creo que esté muy claro lo que quieres, pero mi interpretación sería hg update -C -rev 388 pero también podrías ser revertida, o posiblemente (improbable) incluso reversible. mi respuesta a this question gives a good difference between update and revert

que realmente necesita para trabajar en lo que desea ver en la copia de trabajo y lo que quiere el estado de la historia que seas como para elegir entre ellos

+0

porque no estaba claro: quería que la copia de trabajo fuera una actualización 388, y que el historial esté completamente vacío. – AP257

+1

La historia y el estado son dos cosas diferentes. Puede estar en rev 388, con rev 389 y 390 en el historial, pero sin cambios locales, por lo que el estado está vacío. –

Cuestiones relacionadas