2011-08-03 15 views
25

¿Qué sucede si una rama tiene dos cabezas? Llegué a esta situación hace semanas por alguna razón que no los fusioné en ese momento y simplemente continué desarrollando en una sola cabeza. Ahora quiero deshacerme de la otra cabeza. ¿Que debería hacer? ¿Debo fusionarlos después de tantos conjuntos de cambios?Mercurial: Cómo lidiar con una rama que tiene dos cabezas

+0

posible duplicado de [¿Hay otra manera de eliminar múltiples cabezas?] (Http://stackoverflow.com/questions/6867054/is-there -otro-modo-de-eliminar-múltiples-cabezas) –

Respuesta

28

Así que tienes esto:

o--o--o--A--B <- older unnecessary head 
     \ 
     1--2--3--4--5--6 <- newer ‘good’ head 

... y que no es necesario A y B, absolutamente, 100% seguro. Si no está seguro de, y hay cosas posiblemente rescatables en A y B, combine mejor los cabezales para combinar los cambios. Como dijo Aaron, Mercurial es bueno en eso.

Ahora usted tiene dos opciones:

  • deshacerse de la vieja cabeza, o
  • hacer una fusión de relleno de dos cabezas que ignora la cabeza B.

Si conjuntos de cambios A y B están presentes en otros repositorios que no controlas, por ejemplo, si otras personas extrajeron A y B en sus repositorios, o presionó A y B en un repositorio público (digamos, Bitbucket), entonces ha liberado A y B en la naturaleza, y no puede deshacerse de ellos. Usted debe hacer un dummy merge:

$ hg up 6 
$ hg --config ui.merge=internal:local merge 

Esto hará caso omiso de cualquier cambio de A y B cuando la fusión.

Si, por el contrario, A y B son privadas, puede strip ellos:

$ hg strip A 

(Rev. A y descendientes despojados; habilitar la extensión MQ para hacer strip disponible)

O, haga una nueva copia de su repositorio sin conjuntos de cambios A y B:

$ hg clone myrepo myrepo2-clone -r 6 

(Sólo rev 6 y antepasados ​​añaden al clon.)

+0

Fusión simulada resolvió mi problema, ¡gracias! – nrodic

-3

Si necesita conservar los cambios en la rama anterior, debe fusionarlos, y no debería ser un problema.

+4

¿Qué pasa si no necesito esos cambios? – thoslin

6

Se crea un encabezado si realiza algunos cambios (agregue un conjunto de cambios a un conjunto de cambios existente). Si eso ocurre varias veces para el mismo conjunto de cambios, se crean varias cabezas. Esto no es nada inusual o malo.

La solución habitual es unirlos. Mercurial es muy bueno para fusionarse. Lo más probable es que el resultado se compile y ejecute sin ningún trabajo manual.

Simplemente ejecute hg merge y luego hg status y hg diff para ver qué cambió entre los dos. Si te gusta el resultado, confírmalo. Si no te gusta, llama al update para limpiar tu espacio de trabajo.

Para deshacerse de una cabeza, el docs explain how to do that.

Usando MQ, también puede convertir la segunda cabeza en una rama independiente (para que pueda mantenerla pero no le molestará). Ver esta respuesta: How can I create a branch for a non-tip revision in Mercurial?

Cuestiones relacionadas