que han comenzado a usar Git en el medio de mi proyecto, donde las dos primeras confirmaciones son sólo algunos ajustes iniciales (.gitignore y .gitattributes), y la tercera cometer M2 añade el contenido del tronco SVN:¿Cómo fusionar dos ramas sin un antecesor común?
I1 -- I2 -- M2 -- N -- .. -- Z
he importado la historia sVN en una rama llamada sVN, donde M1 es el tronco sVN (con el mismo contenido que M2, excepto .gitignore y .gitattributes):
A -- B -- ... -- K -- L -- M1
Q: ¿Cuál es el mejor enfoque para unir ambas sucursales?
pude combinar M1 M2 y en M3, y luego reajustar, pero no sé cómo eliminar los I1 I2 y compromete y si puedo quitar con seguridad la M3 commit (He encontrado algunos consejos para conservar los commit de fusión, pero en este caso M3 ya no es necesario).
A -- B -- ... -- K -- L -- M1
\
M3 -- N' -- .. -- Z'
/
I1 -- I2 -- M2 -- N -- .. -- Z
Otra forma sería la de cereza recoger el N .. Z comete en SVN rama con la mano, pero me gustaría evitar este enfoque.
La solución más elegante sería la de reajustar los cambios introducidos por N .. Z se compromete en la parte superior de SVN rama, pero no lo encontró sin embargo, la sintaxis requerida por dos ramas sin un ancestro común .
+1 lo investigará – alexandrul
Puede usar "' git filter-branch' "para ** reescribir el historial ** de acuerdo con los injertos, convirtiendo el parentesco injertado en un parentesco real. Pero eso reescribe la historia. –
@Jakub: ¿daría un ejemplo de usar filter-branch con injertos (como respuesta para poder votar)? Estoy bien con la reescritura de la historia. – alexandrul