I passaggi che hai elencato funzioneranno, ma c'è un modo più lungo che ti dà più opzioni:
git checkout dmgr2 # gets you "on branch dmgr2"
git fetch origin # gets you up to date with origin
git merge origin/master
Il fetchcomando può essere eseguito in qualsiasi momento prima di merge, ad esempio, è possibile scambiare l'ordine del recupero e del pagamento, perché fetchpassa semplicemente al nome remoto ( origin) e gli dice: "dammi tutto quello che hai che non ho ", vale a dire, tutti si impegnano su tutti i rami. Vengono copiati nel repository, ma denominati origin/branchper qualsiasi ramo denominato branchsul telecomando.
A questo punto puoi utilizzare qualsiasi visualizzatore ( git log, gitkecc.) Per vedere "ciò che hanno" che non possiedi e viceversa. A volte questo è utile solo per Warm Fuzzy Feelings ("ah, sì, è proprio quello che voglio") e a volte è utile per cambiare completamente le strategie ("whoa, non voglio ancora QUESTA roba").
Infine, il mergecomando prende il commit dato, che puoi nominare come origin/master, e fa tutto il necessario per portare quel commit e i suoi antenati, a qualunque ramo tu sia quando esegui il file merge. Puoi inserire --no-ffo --ff-onlyimpedire un avanzamento rapido o unire solo se il risultato è un avanzamento rapido, se lo desideri.
Quando si utilizza la sequenza:
git checkout dmgr2
git pull origin master
il pullcomando ordina a git di correre git fetch, e quindi l'equivalente morale di git merge origin/master. Quindi questo è quasi lo stesso che fare i due passi a mano, ma ci sono alcune sottili differenze che probabilmente non ti riguardano troppo. (In particolare la fetchcorsa passo pullporta oltre solo origin/master , e non aggiorna l'arbitro nella repo: 1 ogni nuovo commit venti fino cui-to solo dalla speciale FETCH_HEAD. Di riferimento)
Se usi il più esplicito git fetch origin(quindi opzionalmente guardati intorno) e poi la git merge origin/mastersequenza, puoi anche masteraggiornare il tuo locale con il telecomando, con una sola fetchcorsa sulla rete:
git fetch origin
git checkout master
git merge --ff-only origin/master
git checkout dmgr2
git merge --no-ff origin/master
per esempio.
1 Questa seconda parte è stata cambiata - dico "risolto" - in git 1.8.4, che ora aggiorna opportunisticamente i riferimenti "diramazione remota". (È stato, come dicono le note di rilascio, una decisione di progettazione deliberata per saltare l'aggiornamento, ma si scopre che più persone preferiscono che git lo aggiorni. Se si desidera che il vecchio ramo remoto SHA-1, per impostazione predefinita venga salvato in e quindi recuperabile dal reflog. Ciò consente anche una nuova funzionalità git 1.9 / 2.0 per la ricerca di rebase a monte.)