2012-03-19 7 views
6

Por ejemplo,¿Por qué no se fusionan git cambios cuando dos ramas son diferentes, pero sin nuevas confirmaciones en cualquiera de las ramas?

I mi rama principal tiene cosas en ella. Otra rama llamada other_branch tiene cosas + más_materiales en ella. Cada rama no tiene nada que comprometer.

Si pago por master y luego intento fusionar other_branch, git dice "Ya está actualizado". y nada sucedió ¿por qué no se fusionará more_stuff en master en este caso? ¿Así es como se diseñó git?

NOTA: other_branch se creó a partir de una confirmación más antigua de maestro.

Respuesta

6

Es muy simple. Si git dice "Ya está actualizado" significa que las ramas no han divergido. Dos ramas han divergido si al menos una de las ramas contiene una confirmación que la otra rama no tiene.

No estoy seguro de a qué te refieres con que tiene cosas + more_stuff en él. Si ha agregado nuevos archivos a other_branch (o ha cambiado los archivos existentes), y ha utilizado "git add" y "git commit", el historial de other_branch se habrá separado de la rama principal. Dado que git dice que no hay cambios para fusionar, el historial no ha cambiado en esa rama, es decir, no has cometido nada.

+2

Oh, lo entiendo. No es muy evidente para un principiante. other_branch contiene los mismos commits que master porque lo inicié desde un commit más antiguo de master. Estaba confundido porque cuando revisé other_branch, veo diferentes archivos, así que pensé que Git Merge fusionaría los archivos en master. Entiendo cómo funciona ahora. La fusión de git se basa en las confirmaciones, no en el árbol de trabajo actual. – trusktr

2

Solo ocurre cuando la rama que está intentando fusionar ya está contenida en la rama actual.

Por lo tanto, el more_stuff que mencionó ya está en la rama principal.

Puede usar gitk para verificar el árbol visual de sus ramas.

+0

gitk? no estoy seguro de qué es –

+0

Es la GUI predeterminada de git. [Más información aquí.] (Https://git-scm.com/docs/gitk) –

Cuestiones relacionadas