Tengo dos ramas A y B. Lo que quiero hacer es crear un nuevo (merge) commit en A con el estado actual de A como padre que se refiere al árbol de archivos descrito por B descartando cualquier cosa de A. Básicamente, el historial de B debería aplastarse en una única confirmación.Creando Merge Commit reemplazando el nuestro por el suyo
El estado del depósito de hormigón consta de dos ramas independend, que no tienen un antecesor común (procedente de dos repositorios independientes por encima), pero que describen el mismo contenido. Ahora quiero encontrar un camino "git" para reunirlos. Una solución básica (sin git) sería verificar A y simplemente copiar el contenido de B en el árbol de trabajo y hacer un git commit
. Eso es básicamente lo que hice antes para propagar el contenido del segundo repositorio al primero.
hacerlo con git He intentado
git checkout A
git merge --squash B
Pero unforunately generó conflictos de combinación para todos los archivos que se diferencian entre A y B, lo que definitivamente no es lo que esperaba.
Básicamente algo así como
git merge --squash -s theirs
debe hacer el trabajo, pero la estrategia de combinación theirs
no existe. La lectura de la docu muestra la posibilidad de utilizar algo así como
git merge -X theirs
que es una opción para la estrategia de combinación recursive
. Pero esto todavía hace una fusión de fragmentos no conflictivos. Solo los fragmentos en conflicto se toman directamente del theirs
.
qué uno de los 'fusionan las estrategias --their' ser útiles aquí? http://stackoverflow.com/questions/4911794/git-command-for-making-one-branch-like-another/4912267#4912267 – VonC
La simulación mencionada n. ° 2 debería hacer el trabajo. Acabo de usarlo para el 'merge --squash'. Después en la historia de B hay una fusión de A, pero esto está bien. Si no se desea, B puede reiniciarse nuevamente. –
Ok, he agregado el # 2 como respuesta. – VonC