git dice que una twig no se fusiona después de volver a basar, ¿por qué?

Estoy usando git-svn para administrar mis twigs de corrección de errores, pero me dice que tengo cambios no fusionados, aunque si reviso el repository de SVN directamente, puedo ver que también se han confirmado. Es como si la rebase de la corrección de error no estuviera configurando la twig como fusionada.

¿Qué estoy haciendo mal aquí?

git checkout -b fix_bug_1234 git add . git commit -m "first change" git add . git commit -m "second change" git rebase -i HEAD~2 // squash the two changes together git svn rebase // fetch any changes from svn git checkout master git rebase fix_bug_1234 git svn dcommit git branch -d fix_bug_1234 error: The branch 'fix_bug_1234' is not fully merged. 

El motivo es que git rebase cambia los objects de confirmación. Entonces, si bien el contenido real (o diff) es el mismo con esos commit rebasados, se están refiriendo a un padre diferente, y como tales son diferentes.

De esa manera, git branch -d no puede verificar que los cambios de esos commits estén incluidos en otras commits. Necesitarás usar git branch -D ( D mayúscula) para forzar la eliminación.

En una nota al margen: git svn dcommit tiene el mismo efecto que rebase. A medida que dcommit empuja las confirmaciones al server SVN, luego obtiene las confirmaciones del server SVN nuevamente. Entonces terminas con objects diferentes a los que empujaste . Aunque pueden ser idénticos en contenido (a less que tengas conflictos), todavía difieren (la razón principal es que git svn agrega una línea al post de confirmación que indica la versión de SVN a la que pertenece la confirmación).

Así es como hago este tipo de cosas, y funciona. La respuesta del usuario poke explica por qué la database de git no está haciendo lo que usted desea.

 git rebase -i HEAD~2 // squash the two changes together git svn rebase // fetch any changes from svn git svn dcommit // you can commit to SVN from any branch git checkout master git svn rebase git branch -d fix_bug_1234