2010-08-04 13 views
74

Acabo de empezar a usar GIT y creo que es maravilloso, sin embargo, estoy un poco confundido sobre lo que hace el comando merge.Fusionando 2 ramas juntas en GIT

Digamos que tenemos un proyecto en funcionamiento en la rama "A".

Voy a casa y realizo cambios en esta rama y la guardo como "B". Otro programador realiza cambios en "A" y lo guarda como "C".

¿Hay alguna forma de fusionar las dos ramas "B" y "C" juntas, y luego confirmar los cambios como una nueva rama, decir "D"?

¿O me está faltando el punto de 'fusión'?

+0

sin necesidad de 'guardar cambios' en otra rama. trabaja una A y luego combina esas diferentes A juntas – knittl

+0

No sigo. A estaría en mi computadora local, dev1 tendría una copia de A en su computadora, y dev2 tiene una copia de A en su computadora. Ambos desarrolladores hacen cambios, ¿cómo fusiono estos cambios? – dotty

+0

ver . los desarrolladores probablemente necesiten cargar/cargar su repositorio en algún lugar primero – knittl

Respuesta

127

merge se usa para juntar dos (o más) ramas.

un pequeño ejemplo:

# on branch A: 
# create new branch B 
$ git checkout -b B 
# hack hack 
$ git commit -am "commit on branch B" 

# create new branch C from A 
$ git checkout -b C A 
# hack hack 
$ git commit -am "commit on branch C" 

# go back to branch A 
$ git checkout A 
# hack hack 
$ git commit -am "commit on branch A" 

por lo que ahora hay tres ramas separadas (es decir, AB y C) con diferentes cabezas

para conseguir los cambios con respecto a B y C de vuelta a A, la caja A (ya realizado en este ejemplo) y luego utilizar el comando de combinación:

# create an octopus merge 
$ git merge B C 

su historia, entonces se verá algo como esto:

…-o-o-x-------A 
     |\  /| 
     | B---/ | 
     \ /
     C---/ 

si desea fusionarse a través de los bordes del repositorio/computadora, eche un vistazo al comando git pull, p. desde la pc con la rama A (este ejemplo creará dos nuevas confirmaciones):

# pull branch B 
$ git pull ssh://host/… B 
# pull branch C 
$ git pull ssh://host/… C 
+0

Obtuve un error de "conflicto de contenido" al fusionar las ramas. – dotty

+0

eso significa que ambas ramas cambiaron la misma pieza de código. arregle los conflitcs, 'git add conflicting_files' y luego' git commit' – knittl

+0

Supongamos que el archivo en A contiene la palabra "hola", la A lo enmendó en "HOLA" y B lo enmendó en "Hola mundo". ¿Cuál sería el resultado de fusionar estos archivos? – dotty