ver recuperar modelo limpiar heads entre diferencias comparacion borrado archivo git git-svn rebase

modelo - recuperar commit borrado git



¿Por qué git svn dcommit pierde el historial de fusiones de fusiones para sucursales locales? (2)

Tengo un repositorio git local creado con git svn clone . Hago una sucursal local, realizo algunos cambios, vuelvo a master, git svn rebase y si todo está bien, git svn rebase mi rama nuevamente en master. Entonces el árbol se ve así:

texto alternativo http://img.skitch.com/20090108-cjguu3hcci9x2k17mcftamw8f1.jpg

A veces, más tarde, cuando git svn rebase nuevamente y obtengo algunos cambios remotos, pierde el hecho de que a_branch se fusionó en la línea principal y el árbol se ve así:

texto alternativo http://img.skitch.com/20090108-kn3bn1qgi5ijw8ja5ijkd75pa3.jpg

¿Porqué es eso? ¿Puedo detenerlo? ¿Hay alguna manera fácil de decir que se ha fusionado una sucursal, o debo eliminar mis sucursales cuando haya terminado, para no olvidar lo que se ha fusionado y lo que no?


La página man de git-svn recomienda que no uses merge. Este es un efecto secundario. Ya que estás rebasando la rama (git svn rebase es un poco como "git pull --rebase") efectivamente reescribe la historia. Puede descartar cualquier confirmación local que ya esté en sentido ascendente en subversión, como la combinación, y conservar solo las confirmaciones que realmente existen en el repositorio svn. Debido a que una confirmación de fusión trivial de una sucursal local no tiene equivalente en SVN, solo compromete los cambios "reales", por lo que estos son los únicos cambios que se ven en su nueva rama maestra reestablecida.

Lo ideal es que su sucursal local fusione solo el avance rápido, es decir, no se genere ningún compromiso de fusión. Si este no es el caso, entonces debería considerar volver a establecer la base de su rama local en el maestro en lugar de fusionarlo. Eso evita crear un commit de fusión por completo.


Porque estás pasando por svn. Perderá mucha información cuando lo haga (también pierde al autor, por ejemplo).