Les étapes que vous avez répertoriées fonctionneront, mais il existe un moyen plus long qui vous offre plus d'options:
git checkout dmgr2 # gets you "on branch dmgr2"
git fetch origin # gets you up to date with origin
git merge origin/master
La fetchcommande peut être exécutée à tout moment avant le merge, c.-à-d. Que vous pouvez échanger l'ordre de l'extraction et de l'extraction, car fetchva simplement sur la télécommande nommée ( origin) et lui dit: "donne-moi tout ce que tu as que je n'ai pas ", c'est-à-dire que tous les commits sur toutes les branches. Ils sont copiés dans votre référentiel, mais nommés origin/branchpour toute branche nommée branchsur la télécommande.
À ce stade , vous pouvez utiliser l' un spectateur ( git log, gitk, etc.) pour voir « ce qu'ils ont » que vous n'avez pas, et vice versa. Parfois, cela n'est utile que pour les sentiments flous chauds ("ah, oui, c'est en fait ce que je veux") et parfois il est utile pour changer complètement de stratégie ("whoa, je ne veux pas encore ce truc").
Enfin, la mergecommande prend le commit donné, que vous pouvez nommer origin/master, et fait tout ce qu'il faut pour introduire ce commit et ses ancêtres, dans la branche sur laquelle vous vous trouvez lorsque vous exécutez le merge. Vous pouvez insérer --no-ffou --ff-onlypour empêcher une avance rapide, ou fusionner uniquement si le résultat est une avance rapide, si vous le souhaitez.
Lorsque vous utilisez la séquence:
git checkout dmgr2
git pull origin master
la pullcommande ordonne à git de courir git fetch, puis l'équivalent moral de git merge origin/master. C'est donc presque la même chose que de faire les deux étapes à la main, mais il y a quelques différences subtiles qui ne vous concernent probablement pas trop. (En particulier, l' fetchétape exécutée par pullapporte uniquement origin/master , et elle ne met pas à jour la référence dans votre référentiel: 1 tout nouveau commit se termine uniquement par la FETCH_HEADréférence spéciale .)
Si vous utilisez la séquence la plus explicite git fetch origin(puis regardez autour de vous), puis la git merge origin/masterséquence, vous pouvez également mettre à jour votre propre local masteravec la télécommande, avec une seule fetchexécution sur le réseau:
git fetch origin
git checkout master
git merge --ff-only origin/master
git checkout dmgr2
git merge --no-ff origin/master
par exemple.
1 Cette deuxième partie a été modifiée - je dis «fixe» - dans git 1.8.4, qui met à jour de façon opportuniste les références de «branche distante». (C'était, comme le disent les notes de version, une décision de conception délibérée d'ignorer la mise à jour, mais il s'avère que plus de gens préfèrent que git le mette à jour. Si vous voulez l'ancienne branche distante SHA-1, elle est par défaut enregistrée dans , et donc récupérable à partir du reflog. Cela permet également une nouvelle fonctionnalité git 1.9 / 2.0 pour trouver les rebases en amont.)