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 fetch
commande 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 fetch
va 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/branch
pour toute branche nommée branch
sur 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 merge
commande 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-ff
ou --ff-only
pour 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 pull
commande 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 pull
apporte 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_HEAD
ré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/master
séquence, vous pouvez également mettre à jour votre propre local master
avec la télécommande, avec une seule fetch
exé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.)