2010-02-17 16 views
6

Tengo un problema con una rama SVN. Hice una salida con git checkout -t -b stable svn/stable. Luego hice una fusión con git rebase master. Después de eso me trataron de confirmar los cambios se funden en la rama remota con git svn dcommitGit: ¿Cómo comprometerse en la rama SVN después de rebase?

pero ahora parece que Git empujó a los cambios en el tronco en lugar de la rama :(

Y git status me dice:

# On branch stable 
# Your branch and 'svn/stable' have diverged, 
# and have 218 and 52 different commit(s) each, respectively. 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
... 

¿alguien sabe lo que hice mal y cómo hacerlo bien?

Respuesta

2

recientemente me golpeó el mismo error. lo que pasa es que cuando se rebase al maestro, primer disco-rese ts actual branch to master y luego aplica commits fusionados. Pero su rama principal está asociada con svn/trunk y, por lo tanto, la nueva rama de restablecimiento también se asocia con ella. Así que git-svn en dcommit cree que las confirmaciones se "insertan" en svn/trunk cuando las presiona.

La solución es usar git merge --no-ff en lugar de git rebase. O para usar las instalaciones de fusión de Subversion.

+0

Hmm gracias, ya saben acerca de la posibilidad de utilizar la combinación de git, pero entonces perderás el historial de revisiones y muchas otras informaciones. ¿Será también una solución para rebase con una rama de maestro en lugar de la maestra misma? – ownking

+0

@tigerseye, dudo que tales trucos de ramificación te ayuden. ya que la confirmación que está asociada con 'svn/trunk' entrará en su rama de todos modos. Para mantener el historial de revisión, puede fusionar con Subversion. De lo contrario, solo contaminarás el registro de subversión y otros desarrolladores no estarán contentos con eso. –

+0

Soy nuevo en git y realmente veo las ventajas, pero en estos pasos a veces parece demasiado difícil para los desafíos diarios. ¿No es un escenario común en el mundo de git switchers fusionar una rama dev git en una rama SVN estable para lo que existe una forma común de hacer esto? – ownking

0

ahora funciona, lo hice así:

git checkout master 
    git svn rebase 
    git checkout --track -b svn_stable svn/stable 
    git merge --squash master 
    git commit -m "Bring stable up-to-date with trunk" 
    git svn dcommit --dry-run 
    git svn dcommit 

La fusión fue mucho más fácil que rebase con el manejo de conflictos.

En esta prueba me olvidé de usar --no-ff, esto obliga a un compromiso para cada fusión, ¿verdad?

Gracias por su ayuda :)

Cuestiones relacionadas