fusionar elimina y agrega files incorrectos

Antes de comenzar a arrojar commands de git, uso Windows 7-64bit con TortoiseGit (actualmente v1.7.11.3) exclusivamente porque soy nuevo en Git.

Mi twig DEV es anterior al master remoto actual y actualizo DEV, y resuelvo conflictos.
La twig DEV ha enviado confirmaciones a la twig de DEV remota, por lo que la rebase no es posible, según tengo entendido.

¿Por qué ocurre este comportamiento y cómo puedo evitarlo?

  1. Checkout master (cambiar a maestro local)
  2. Pull origin master (sin conflictos)
  3. Checkout DEV (cambiar a la twig dev)
  4. Merge master (aplicar cambios maestros locales en la twig DEV local)
  5. Soluciona los conflictos y commit files modificados (files de conflicto automáticos y fijos)

Cuando abro el log , veo los files "padre 1" como en la window de confirmación Y los files "padre 2", que no se muestran. Aquí está la parte extraña, ahora se agregan los files que el maestro (local / remoto es el mismo) y se eliminan los files nuevos.
Además, los files "padre 2" no generaron ningún conflicto a pesar de que algunos deberían hacerlo .

Los files nuevos / eliminados funcionan de manera opuesta a lo que esperaba. Porqué es eso ?
Si un file es nuevo en el maestro y me fusiono en una twig DEV, entonces espero que exista después de la fusión.
Mi suposition es que la twig DEV se considera primaria, y no la twig (principal) que fusiono en DEV.

No tengo la opción de utilizar Revert para volver a crear los files eliminados (los que son realmente nuevos en el maestro).

La dirección de fusión es incorrecta como la veo:

Deberías hacer:

 git checkout master git pull origin master 

Aquí tienes dos variantes:

1) si no quieres reescribir el historial de twigs de desarrollo en el control remoto, entonces debes mantenerlo tal como está pero para hacerlo

 git merge dev # will produce merge commit if not fast-forward 

2) o si no te importa mucho el historial de twigs de desarrollo

 git checkout dev git rebase master # now all commits that happened in dev will be "on top" of master, master will be behind git checkout master git merge dev # will result in fast-forward merge without merge commit 

Ahora, para volver al estado anterior a la fusión defectuosa, puede hacerlo (si la fusión es lo último que hizo en la twig dev):

 git checkout dev git reset --hard HEAD~1 

Ahora puedes fusionar correctamente. En el segundo caso, el empuje de la twig de desarrollo para el dev remoto la mayoría de las veces será prohibido como avance rápido a less que use -f indicador. Espero que ayude.