Fusionando en git: a través de git-svn, dice ya actualizado, pero git-diff dice que hay diferencias

Estoy usando gitsvn para trabajar con una base de código y necesito fusionar los cambios en el enlace a mi sucursal.

Tengo ambas twigs en git, y cuando ejecuto git diff trunk mientras estoy en mi twig, puedo ver todos los cambios.

Sin embargo, cuando ejecuto git merge heads / trunk, aparece el post "Ya está actualizado".

Claramente no está actualizado. ¿Qué estoy haciendo mal?

"Ya está actualizado" puede significar:

  • trunk es un padre del maestro (todos los cambios del tronco ya se han fusionado al maestro)
  • o está trabajando en una cabeza separada (lo que puede suceder si realiza el pago directamente con una reference de compromiso de SHA1 o una label).

Nota: tenga en count git svn advertencias

El seguimiento de fusión en Subversion es deficiente y, por lo tanto, hacer un desarrollo ramificado con Subversion puede ser engorroso.
Mientras que git svn puede rastrear el historial de copys (incluidas las twigs y las tags) para los repositorys que adoptan un layout estándar, aún no puede representar el historial de fusión que ocurrió dentro de git backstream a los usuarios de SVN.
Por lo tanto, se recomienda que los usuarios mantengan la historia lo más lineal posible dentro de git para facilitar la compatibilidad con SVN.

En aras de la simplicidad y la interoperación con un sistema less capaz (SVN), se recomienda que todos los usuarios de git svn dcommit , dcommit y dcommit directamente desde el server SVN, y eviten todas las operaciones de git clone/pull/merge/push entre git repositorys y sucursales.
El método recomendado para intercambiar código entre git branches y los usuarios es git format-patch y git am , o simplemente'comprometing' al repository SVN.

Nada como un ejemplo. A continuación, le indicamos cómo llegar a esta situación:

(comenzando en un directory vacío):

 > git init
 > echo "hello"> a.txt
 > git add -A
 > git commit -m "Creado en master"
 > testing de twig git
 > Prueba de pago de git

En este punto a.txt son idénticos en las twigs maestra y de testing

 > echo "adios"> a.txt
 > git add -u
 > git commit -m "Cambió una testing"

Ahora (obviamente) habrá diferencias:

 > git diff --name-status master 

 M a.txt

sin embargo, git no tiene nada para fusionarse:

 > git merge master
 Ya está actualizado.

Eso es porque los cambios se hacen aquí en la testing, no en el maestro. Si cambia a la testing, diff informará de manera similar, pero la combinación ahora se combinará en los cambios de testing a principal:

 > git checkout master
 > git diff --name-status test 

 M a.txt
 > testing de fusión git
 Actualizando 088cd9d..3d8c8e2
 Avance rápido
  a.txt |  2 + -
  1 file modificado, 1 inserción (+), 1 eliminación (-)

La fusión de Git es direccional, la fusión de la twig A a B no es lo mismo que la fusión de B a A.