Cómo sincronizar confirmaciones en git

Tengo una twig A en la que hago un commit C1. Bifurco otra twig de A; llámalo B; y hacer un commit C2 (cambios independientes de C1). Ahora más tarde vuelvo a A y hago algunos cambios en C1. Necesito actualizar B ahora con los últimos cambios, así que hago un "git rebase A" en B. Esto me da conflictos. ¿Existe una manera fácil de sincronizar con A. Solo quiero sobrescribir C1 en la twig B (en realidad, B.C1 debe ser un espejo de A.C1). O al volver a basar, ¿puedo especificar algo como: "resolver conflictos automáticamente tomando todos los cambios de la twig A"

Siempre puedo hacer lo siguiente. Cree una nueva twig D a partir de la actualización A y elija C2 en la parte superior. Cuando hago esto y trato de impulsar mis cambios a gerrit (después de actualizar D.C2) aparece el error:

To ssh://xxxx@gerrit.xxxx:29418/xxxxx ! [remote rejected] HEAD -> refs/for/master (no changes made) error: failed to push some refs to 'ssh://xxxx@gerrit.xxxx:29418/xxxxx' 

Estoy tratando de entender por qué.

Gracias por adelantado.

Cuando reescribe commits, los reescribe completamente. Entonces terminas con objects commit completamente nuevos que son incompatibles con los que tenías antes. Esto no es un problema si lo haces localmente, pero se convierte en uno cuando ya has empujado las confirmaciones anteriores antes (como en tu caso). Porque ahora tienes los compromisos anteriores en tu repository remoto y confirmaciones reescritas en tu repository local. Es por eso que nunca deberías volver a establecer las comstackciones una vez que las hayas publicado de todos modos. Lo mismo ocurre con cherry-picking por cierto: el compromiso que estás haciendo random se rescribe por completo y se aplica en la parte superior de tu sucursal.

En su lugar, simplemente fusiona las twigs usando git merge A De esta forma, terminas con confirmaciones que son compatibles con lo que sea que hayas publicado antes.

Ahora en tu caso, para reparar la situación, haz git push --force . Esto sobrescribirá todo lo que esté en la twig del repository remoto. Así que tenga cuidado con esto y definitivamente no lo use cuando otros estén accediendo al repository también (ya que sus compromisos también se romperán). Pero supongo que para Gerrit está bien, ya que actualizará la request de cambio.