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 fetch
comando può essere eseguito in qualsiasi momento prima di merge
, ad esempio, è possibile scambiare l'ordine del recupero e del pagamento, perché fetch
passa 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/branch
per qualsiasi ramo denominato branch
sul telecomando.
A questo punto puoi utilizzare qualsiasi visualizzatore ( git log
, gitk
ecc.) 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 merge
comando 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-ff
o --ff-only
impedire 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 pull
comando 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 fetch
corsa passo pull
porta 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/master
sequenza, puoi anche master
aggiornare il tuo locale con il telecomando, con una sola fetch
corsa 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.)