Ответ 1
Действия, которые вы указали, будут работать, но есть более длинный способ, который дает вам больше возможностей:
git checkout dmgr2 # gets you "on branch dmgr2"
git fetch origin # gets you up to date with origin
git merge origin/master
Команда fetch
может быть выполнена в любой момент до merge
, т.е. вы можете поменять порядок выборки и выписки, потому что fetch
просто переходит к именованному удаленному (origin
) и говорит ему: "дай мне все, что у меня есть", т.е. все совершает все ветки. Они копируются в ваш репозиторий, но называются origin/branch
для любой ветки с именем branch
на пульте дистанционного управления.
В этот момент вы можете использовать любое средство просмотра (git log
, gitk
и т.д.), чтобы увидеть, что у вас есть, и наоборот. Иногда это полезно только для Warm Fuzzy Feelings ( "ах, да, это на самом деле то, что я хочу" ), и иногда это полезно для полного изменения стратегий ( "whoa, я не хочу, чтобы это было еще" ).
Наконец, команда merge
принимает заданный коммит, который вы можете назвать как origin/master
, и делает все возможное, чтобы принести эту фиксацию и ее предков, в любую ветвь, в которой вы находитесь, когда вы запускаете merge
. Вы можете вставить --no-ff
или --ff-only
, чтобы предотвратить ускоренную перемотку вперед или слить, только если результат является быстрым, если хотите.
Когда вы используете последовательность:
git checkout dmgr2
git pull origin master
команда pull
указывает git на запуск git fetch
, а затем моральный эквивалент git merge origin/master
. Так что это почти то же самое, что делать два шага вручную, но есть некоторые тонкие различия, которые, вероятно, не слишком относятся к вам. (В частности, шаг fetch
, выполняемый pull
, выводит только origin/master
, и он не обновляет ref в вашем репо: 1 любые новые коммиты завершаются, ссылаясь только на специальная ссылка FETCH_HEAD
.)
Если вы используете более явный git fetch origin
(а затем опционально оглядитесь) и затем git merge origin/master
последовательность, вы также можете обновить свой собственный локальный master
с помощью пульта дистанционного управления, только с одним запуском fetch
по сети:
git fetch origin
git checkout master
git merge --ff-only origin/master
git checkout dmgr2
git merge --no-ff origin/master
например.
1 Эта вторая часть была изменена - я говорю "fixed" -in git 1.8.4, которая теперь оппортунистически обновляет ссылки "удаленной ветки". (Это было, как отмечается в примечаниях к выпуску, преднамеренное дизайнерское решение, чтобы пропустить обновление, но выясняется, что больше людей предпочитают, чтобы git обновлял его. Если вам нужен старый SHA-1 с удаленной ветвью, по умолчанию он будет сохраняется и восстанавливается с помощью reflog. Это также позволяет использовать новую функцию git 1.9/2.0 для поиска восходящих багов.)