Basado en @Sailesh y @DavidCulp:
(on branch development)
$ git fetch origin master
$ git merge FETCH_HEAD
(resolve any merge conflicts if there are any)
$ git checkout master
$ git merge --no-ff development (there won't be any conflicts now)
El primer comando se asegurará de que todas las confirmaciones ascendentes se realicen en el maestro remoto, con una respuesta de Sailesh que no sucedería.
El segundo realizará una fusión y creará conflictos que luego podrá resolver.
Después de hacerlo, finalmente puede finalizar la compra de master para cambiar a master.
Luego, fusiona la rama de desarrollo con el maestro local. El indicador no-ff creará un nodo de confirmación en maestro para que se pueda rastrear toda la fusión.
Después de eso, puede comprometerse y empujar su fusión.
Este procedimiento asegurará que haya un compromiso de fusión de desarrollo a maestro que las personas puedan ver, luego, si miran la rama de desarrollo, pueden ver los compromisos individuales que ha realizado a esa rama durante su desarrollo.
Opcionalmente, puede modificar su confirmación de fusión antes de presionarla, si desea agregar un resumen de lo que se hizo en la rama de desarrollo.
EDITAR: mi respuesta original sugirió una git merge master
que no hizo nada, es mejor hacerlo git merge FETCH_HEAD
después de buscar el origen / maestro
git pull -u
establece el seguimiento ascendente para la rama (o todas las ramas si se presiona más de una). Una vez que se establece, el seguimiento persiste. No hay razón para usarlo continuamente.