git-rebase
-X<option>
Se pueden pasar las menciones de la página man git-merge
. ¿Cuándo / cómo exactamente?
Me gustaría volver a crear la base aplicando parches con una estrategia recursiva y su opción (aplique cualquier cosa, en lugar de omitir confirmaciones conflictivas completas). No quiero fusionarme, quiero hacer que la historia sea lineal.
He intentado:
git rebase -Xtheirs
y
git rebase -s 'recursive -Xtheirs'
pero git rechaza -X
en ambos casos.
git rebase -Xtheirs
funciona en versiones recientes, excepto que los conflictos de árbol deben resolverse manualmente. Debe ejecutar git rebase -Xtheirs --continue
(con -X
repetición) después de resolver esos conflictos.
git
git-rebase
Kornel
fuente
fuente
git rebase --interactive
también con . Vea mi [respuesta actualizada a continuación ( stackoverflow.com/a/2945367/6309 ).Respuestas:
Puede usar esto con Git v1.7.3 o versiones posteriores.
(que es una abreviatura de
git rebase --strategy recursive --strategy-option theirs ${branch}
lo indicado en la documentación )Desde Git v1.7.3 Notas de la versión:
git rebase --strategy <s>
aprendió la opción--strategy-option
/-X
para pasar opciones adicionales que se entienden por la estrategia de fusión elegida.NB: "Nuestro" y "suyo" significan lo contrario de lo que hacen durante una fusión directa. En otras palabras, "el suyo" favorece los commits en la rama actual .
fuente
ours
ytheirs
parece ser lo contrario de lo que espero. Necesito usartheirs
para favorecer mi rama actual.-X
implica-s recursive
, por lo que ahora puede usar sologit rebase ${branch} -X theirs
. (fuente git-scm.com/docs/git-rebase#git-rebase--Xltstrategy-optiongt )Esto es para combinar estrategias que vienen con su propio conjunto de opciones
debería funcionar, aunque este parche menciona (febrero de 2010):
Entonces, si aún no funciona, ¡se está debatiendo ahora mismo!(compatible con git reciente)
Actualización de commit db2b3b820e2b28da268cc88adff076b396392dfe (julio de 2013, git 1.8.4+),
Eso significa que la
-X
estrategia ahora funciona con rebase interactivo, así como rebase simple.fuente
Como dijo iCrazy , esta función solo está disponible para git 1.7.3 en adelante. Entonces, para las almas pobres (como yo) que todavía usan 1.7.1, presento una solución que hice yo mismo:
git-rebase-suyo
Es un script muy bien pulido (y, por lo tanto, largo), destinado al uso de producción: opciones de interfaz de usuario, maneja múltiples archivos, verifica si el archivo realmente tiene marcadores de conflicto, etc., pero el "núcleo" podría resumirse en 2 líneas:
Y aquí está el guión completo:
fuente
git rebase --strategy="recursive --theirs" master