2010-07-23 10 views
12

Mi colega se ha comprometido dos veces en su repositorio en la sucursal incorrecta.¿Cómo puedo eliminar algunos commits en Mercurial que se aplicaron a la rama incorrecta y luego reproducirlos en la correcta?

¿Cuál es la forma más efectiva de tomar esas dos confirmaciones, deshacerse de ellas y luego confirmarlas correctamente en la rama derecha? (los cambios no han sido empujados)

Idealmente, nos gustaría una forma de hacerlo desde TortoiseHG, pero por supuesto, usaremos la línea de comandos si es la mejor opción.

+0

Esto podría ayudar en el lado TortoiseHg: http://stackoverflow.com/questions/2963250/how-to-remove-accidental-branch-in-tortoisehg/2974657#2974657 – VonC

Respuesta

6

Por lo que he descubierto, el trasplante es la mejor extensión para usar. Aplica un changset a cualquier otra revisión que desee.

http://mercurial.aragost.com/kick-start/tasks.html#transplanting-changes

La solución a mi problema fue actualizar a la rama donde se deberían haber aplicado los dos cambios, trasplantar los dos conjuntos de cambios en MQ y luego usar para despojar a los cambios. Todo lo que se puede hacer dentro de tortuga también.

14

La extensión de colas Mercurial (mq) puede ayudar.

dado un historial de cambios que tiene este aspecto:

@ changeset: 3:9dc681b56325 
| summary:  file4 
| 
o changeset: 2:6675b3f86aa7 
| summary:  file3 
| 
| o changeset: 1:4a3209ed5b2f 
|/ summary:  file2 
| 
o changeset: 0:6ab45ac3bd6d 
    summary:  file1 

Los siguientes comandos se mueve presenten conjunto de cambios 'file4' en la otra rama (la cabeza 'fichero2'):

hg qimport -r 3  // convert revision 3 to a patch 
hg qpop    // remove it 
hg update 1   // switch to the other branch head 
hg qpush   // push the change back 
hg qfin -a   // convert the applied patch back to a changeset 

Resultando en :

@ changeset: 3:3faa754edb0b 
| summary:  file4 
| 
| o changeset: 2:6675b3f86aa7 
| | summary:  file3 
| | 
o | changeset: 1:4a3209ed5b2f 
|/ summary:  file2 
| 
o changeset: 0:6ab45ac3bd6d 
    summary:  file1 

tenga en cuenta que el hash de cambios para rev 3 cambió, debido al conjunto de cambios que tiene un difieren ent padre ahora. Las versiones posteriores de TortoiseHg también son compatibles con la extensión MQ.

Cuestiones relacionadas