Los pasos que enumeró funcionarán, pero hay una forma más larga que le brinda más opciones:
git checkout dmgr2 # gets you "on branch dmgr2"
git fetch origin # gets you up to date with origin
git merge origin/master
El fetchcomando se puede hacer en cualquier momento antes del merge, es decir, puede intercambiar el orden de la búsqueda y el pago, porque fetchsimplemente va al control remoto nombrado ( origin) y le dice: "dame todo lo que tienes que no tengo ", es decir, todos los commits en todas las ramas. Se copian en su repositorio, pero reciben el nombre origin/branchde cualquier rama nombrada branchen el control remoto.
En este punto se puede utilizar cualquier espectador ( git log, gitk, etc.) para ver "lo que tienen" que no lo hace, y viceversa. A veces esto solo es útil para Warm Fuzzy Feelings ("ah, sí, eso es de hecho lo que quiero") y otras veces es útil para cambiar estrategias por completo ("whoa, todavía no quiero ESO").
Finalmente, el mergecomando toma el commit dado, que puede nombrar como origin/master, y hace lo que sea necesario para incorporar ese commit y sus antepasados, a cualquier rama en la que se encuentre cuando ejecuta el merge. Puede insertar --no-ffo --ff-onlyevitar un avance rápido, o fusionar solo si el resultado es un avance rápido, si lo desea.
Cuando usas la secuencia:
git checkout dmgr2
git pull origin master
el pullcomando indica a git que se ejecute git fetch, y luego el equivalente moral de git merge origin/master. Entonces, esto es casi lo mismo que hacer los dos pasos a mano, pero hay algunas diferencias sutiles que probablemente no le preocupan demasiado. (En particular, el fetchpaso ejecutado solopull trae , y no actualiza la referencia en su repositorio: 1 cualquier nueva confirmación termina referida solo por la referencia especial ). origin/masterFETCH_HEAD
Si usa la secuencia más explícita git fetch origin(luego, opcionalmente, mire a su alrededor) y luego git merge origin/master, también puede actualizar su propio local mastercon el control remoto, con solo una fetchejecución en la red:
git fetch origin
git checkout master
git merge --ff-only origin/master
git checkout dmgr2
git merge --no-ff origin/master
por ejemplo.
1 Esta segunda parte se ha cambiado, digo "arreglado", en git 1.8.4, que ahora actualiza las referencias de "rama remota" de manera oportunista. (Fue, como dicen las notas de la versión, una decisión de diseño deliberada para omitir la actualización, pero resulta que más personas prefieren que git lo actualice. Si desea que la antigua rama remota SHA-1, por defecto, se guarde en y, por lo tanto, recuperable del reflog. Esto también habilita una nueva característica git 1.9 / 2.0 para encontrar rebases ascendentes).