2011-01-07 5 views

Respuesta

2

Puede comprometer su trabajo en progreso y presionarlo en un servidor en una rama temporal. Pero para hacerlo, deberá enviar el archivo con marcadores de conflicto (git add . ; git commit). Y te aconsejaré que no lo hagas, ya que es muy fácil perder uno de los lugares en conflicto cuando vuelvas a la fusión. También puede intentar aplastar su combinación en progreso (git squash save), pero no sé si es posible enviar una referencia de squash en un servidor.

Otra alternativa sería intentar dividir la fusión compleja en bloques más pequeños y empujar cada fusión intermedia.

Para exemple, si usted tiene los siguientes antecedentes:

*---*---*---*---*---*---*---*---*---A 
    \ 
    \--*---0---1---2---3---4---5---B 

Y intenta combinar B en A, se puede obtener el mismo resultado, en primer lugar la fusión de 0, 1, luego 2, luego 3,. .. luego, finalmente B (0, 1, 2, ... puede no ser un compromiso sucesivo, sino algunos hitos importantes en la rama B).

Esta es la estrategia que estamos utilizando al hacer una fusión compleja. La rama fusionada puede no estar en un estado viable durante la fusión, por lo que no presione directamente a A, sino a otra rama (combinación AB), luego, una vez que termine la fusión, presione todo a A.

+0

Pensé en el compromiso progresivo; pero para el caso específico, uno no puede comprometer una fusión en progreso, que es lo que estoy buscando. – Marcus

+1

Añadiría: si usa 'git re-re-re', podría obtener las fusiones más pequeñas funcionando, luego tirarlas y hacer la fusión grande rápidamente usando los datos de re-re-re. –

0

pero para el caso específico, no se puede comprometer una fusión en progreso, que es lo que estoy buscando.

Debería ser posible mover temporal .git/MERGE_HEAD (creado cuando merging), confirmación, y restaurar .git/MERGE_HEAD.

Cuestiones relacionadas