2008-12-09 21 views
5

Tengo un repositorio git local que rastrea un repositorio SVN remoto a través del git svn. He realizado y comprometido algunos cambios en el repositorio git local, pero ahora me gustaría crear una rama que refleje SVN HEAD para hacer algunos cambios al código tal como está en SVN, porque no quiero propagarlo los cambios en mi git master a SVN por el momento. ¿Cómo puedo hacer esto?¿Cómo revertir una rama git-svn a SVN HEAD?

Seguimiento inmediato: Tendré que realizar y confirmar los cambios en SVN HEAD, luego fusionarlos nuevamente en mi maestro de git. ¿Cómo hago esto? ¿Sigo git merge la rama 'svn-edits' en el maestro, o hago un git svn rebase?

+0

¿En serio? ¡¿Puedes hacer eso con git y svn ?! ¡¡Salvaje!! – Kieveli

+1

Sí, hay un pequeño programa llamado git-svn (ver man git-svn para más información) que conecta git y svn juntos (svn se convierte en el repositorio remoto para el repositorio local de git). – Loki

Respuesta

5

Supongo que la rama en la que está trabajando es la de trunk (la llamaré old-trunk). Basta con crear una nueva rama de allí

git checkout -b real-trunk remotes/trunk 

Ahora realice los cambios a real-trunk y se comprometan a partir de ahí. Después, simplemente vuelva a establecer la base de su antigua rama en la nueva.

git svn dcommit 
git checkout old-trunk 
git rebase real-trunk 

Ahora los cambios anteriores se basan en los cambios más recientes que acabas de hacer.

Cuestiones relacionadas