Git Refresh Merge Points Ambas twigs a cometer más reciente

Mi equipo está usando Bitbucket con 'msysgit' y el plugin git de Eclipse en Windows para administrar git repo. Normalmente tenemos un maestro y 2 o 3 twigs de características que se pueden basar entre sí. Nos encontramos con un caso en el que después de actualizar 'feature-2' desde 'feature-1' tanto 'feature-1' como 'feature-2' apuntan a la confirmación fusionada. Esto contamina 'feature-1' con confirmaciones que no deberían estar en 'feature-1'. Por favor mira el diagtwig a continuación.

feature-1 --0--1--\--2--3--4--\ \ create \ refresh feature-2 \--5--6--7--\--- 

'feature-1' está en existencia. 'feature-2' se crea y se trabaja mientras se trabaja en 'feature-1'. Una fusión se realiza desde 'feature-1' a 'feature-2'.

 git checkout feature-2 git merge feature-1 git push 

Ahora 'feature-1' y 'feature-2' apuntan al mismo hash de confirmación y 'feature-1' contiene los commits de 'feature-2'.

A veces, este flujo de trabajo se comporta como esperaba, donde 'feature-2' contiene todas las confirmaciones de 'feature-1' y 'feature-1' se mantiene en su propia cabeza. Esporádicamente, experimentamos lo que estoy informando.

¿Alguien tiene alguna idea de lo que está pasando? Siento que me falta un concepto rudimentario.

La única forma en que esto:

 git checkout feature-2 git merge feature-1 

terminará con feature-1 y feature-2 apuntando a la misma confirmación si la feature-2 no se ha comprometido ya que se ha bifurcado de la feature-1 o desde la última combinación, esto dará como resultado un rápido -forward merge que solo mueve el puntero para que feature-2 apunte al mismo commit como feature-1 . Incluso si ese es el caso, los compromisos futuros en las dos twigs divergirán nuevamente, ya que siguen siendo pointers separados, a pesar de que señalan lo mismo por un time.

Una vez que haya realizado una fusión, es normal que parezca que la fusión-en-sucursal ( feature-2 en este caso) tiene todas las confirmaciones de feature-1 hasta el punto de fusión en su historial-eso es lo que quería. feature-1 no debe mostrar las confirmaciones de la feature-2 less que alguien inadvertidamente hiciera la fusión opuesta (por ejemplo, git checkout feature-1; git merge feature-2 ). Debería poder visualizar lo que está pasando con gitk --all .