As etapas listadas funcionarão, mas há uma maneira mais longa de oferecer mais opções:
git checkout dmgr2 # gets you "on branch dmgr2"
git fetch origin # gets you up to date with origin
git merge origin/master
O fetch
comando pode ser feito a qualquer momento antes de merge
, ou seja, você pode trocar a ordem da busca e do checkout, porque fetch
apenas passa para o remote ( origin
) e diz: "me dê tudo o que você tem ", ou seja, tudo confirma em todos os ramos. Eles são copiados para o seu repositório, mas com o nome origin/branch
de qualquer filial nomeada branch
no controle remoto.
Nesse ponto, você pode usar qualquer visualizador ( git log
, gitk
etc) para ver "o que eles têm" que você não possui e vice-versa. Às vezes, isso é útil apenas para Warm Fuzzy Feelings ("ah, sim, é de fato o que eu quero") e, às vezes, é útil para mudar completamente as estratégias ("whoa, eu não quero isso ainda").
Finalmente, o merge
comando leva o commit fornecido, que você pode nomear como origin/master
, e faz o que for necessário para trazer esse commit e seus ancestrais, para qualquer ramo em que você esteja quando executar o merge
. Você pode inserir --no-ff
ou --ff-only
impedir um avanço rápido ou mesclar apenas se o resultado for um avanço rápido, se desejar.
Quando você usa a sequência:
git checkout dmgr2
git pull origin master
o pull
comando instrui o git a executar git fetch
e, em seguida, o equivalente moral de git merge origin/master
. Portanto, isso é quase o mesmo que executar as duas etapas manualmente, mas existem algumas diferenças sutis que provavelmente não são muito importantes para você. (Em particular, a fetch
etapa executada pull
traz apenas a substituição origin/master
e ela não atualiza a ref no seu repo: 1 qualquer novo commit acaba sendo referido apenas pela FETCH_HEAD
referência especial .)
Se você usar a sequência mais explícita git fetch origin
(em seguida, opcionalmente, procurar) e, em seguida git merge origin/master
, também poderá atualizar seu próprio local master
com o controle remoto, com apenas uma fetch
execução na rede:
git fetch origin
git checkout master
git merge --ff-only origin/master
git checkout dmgr2
git merge --no-ff origin/master
por exemplo.
1 Esta segunda parte foi alterada - digo "corrigida" - no git 1.8.4, que agora atualiza referências de "ramificação remota" oportunamente. (Foi, como dizem as notas de versão, uma decisão deliberada do projeto de ignorar a atualização, mas acontece que mais pessoas preferem que o git atualize. e, portanto, recuperável a partir do reflog, o que também permite um novo recurso git 1.9 / 2.0 para encontrar rebotes upstream.)