git - posible - ¿Por qué tengo que resolver el mismo conflicto una y otra vez?
resolver conflictos git consola (2)
Cuando hago git rebase branch1
en mi branch1-local
obtengo conflictos. Resuelvo el conflicto, git add <conflicted-add>
y luego git rebase --continue
como git me pide que haga. Después de eso se aplica una nueva confirmación. Aparece un nuevo conflicto. ¡Pero es el mismo conflicto otra vez! ¡El mismo archivo !. Lo hago de nuevo, git add
, git rebase --continue
, y luego todo se repite de nuevo hasta que repito esto para cada confirmación que se rebasa.
¿Por qué rebase me hace rehacer la misma resolución de conflictos una y otra vez?
Lo que quieres es git rerere
que registra las resoluciones de conflicto para ti. La mejor introducción a esto que he visto es ahora parte del libro Git, capítulo Herramientas . En la práctica, cuando realice un rebase, terminará deteniéndose como antes, pero solo tendrá que verificar que el conflicto de fusión se haya resuelto, luego git add
y continúe.
No deberías tener el mismo conflicto una y otra vez. Rerere no te ayudará aquí. Simplemente significa que la base de código que está intentando reproducir las confirmaciones es tan diferente que cada confirmación necesita su ayuda para ajustarla. Esta es una de las razones para favorecer la fusión sobre la rebase. Rebase debe usarse solo si es necesario y no es parte de su flujo de trabajo regular. Rerere ayudará mucho más en un flujo de trabajo de tipo combinación / reinicio. Aquí está mi flujo de trabajo que evita la rebasación: http://dymitruk.com/blog/2012/02/05/branch-per-feature/
Una forma de aliviar algo del dolor es usar un programa de fusión inteligente como Beyond Compare. Es consciente de la sintaxis y resolverá bastantes conflictos que Git rechazará (con razón) hacer por usted. Muchas veces, estas herramientas, cuando se invocan, ni siquiera abren su interfaz de usuario, resuelven el problema y permiten que el comando git mergetool
continúe con el siguiente conflicto. Recuerde configurar "el código de salida de trust mergetool" en true.