Шаги, которые вы перечислили, будут работать, но есть более длинный путь, который дает вам больше возможностей:
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 («ах, да, это на самом деле то, что я хочу»), а иногда это полезно для полного изменения стратегии («ааа, я пока не хочу ЭТОГО»).
Наконец, merge
команда берет данный коммит, который вы можете назвать как origin/master
, и делает все возможное, чтобы ввести этот коммит и его предков, в любую ветвь, в которой вы находитесь, когда вы запускаете merge
. Вы можете вставить --no-ff
или --ff-only
предотвратить ускоренную перемотку вперед или объединить, только если результат ускоренной перемотки вперед, если хотите.
Когда вы используете последовательность:
git checkout dmgr2
git pull origin master
то pull
команда инструктирует мерзавец для запуска git fetch
, а затем моральный эквивалент git merge origin/master
. Так что это почти то же самое, что делать два шага вручную, но есть некоторые тонкие различия, которые, вероятно, не слишком касаются вас. (В частности, fetch
шаг, выполняемый by, pull
переносит только origin/master
, и он не обновляет ссылку в вашем репо: 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 Эта вторая часть была изменена - я говорю «исправлено» - в git 1.8.4, который теперь обновляет ссылки на «удаленные ветви» оппортунистически. (Как было отмечено в примечаниях к выпуску, это было обдуманное решение о дизайне, чтобы пропустить обновление, но оказалось, что все больше людей предпочитают его обновлять. Если вы хотите использовать старую удаленную ветвь SHA-1, по умолчанию она сохраняется в и, таким образом, могут быть восстановлены из журнала reflog. Это также позволяет использовать новую функцию git 1.9 / 2.0 для поиска исходных версий.)