Кроки, які ви перерахували, працюватимуть, але існує довший шлях, який дає вам більше можливостей:
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
тощо), щоб побачити "що вони мають", чого у вас немає, і навпаки. Іноді це корисно лише для теплих нечітких почуттів ("ах, так, це насправді те, що я хочу"), а іноді корисно для зміни стратегій цілком ("що, я ще не хочу ТОГО речі").
Нарешті, merge
команда приймає дану команду, яку ви можете назвати як origin/master
, і робить все, що потрібно для залучення цього комітету та його предків до будь-якої гілки, на якій ви працюєте, коли запускаєте команду merge
. Ви можете вставити --no-ff
або --ff-only
запобігти перемотці вперед або об'єднати, лише якщо результат швидкий вперед, якщо вам подобається.
При використанні послідовності:
git checkout dmgr2
git pull origin master
то pull
команда інструктує мерзотник для запуску git fetch
, а потім моральний еквівалент git merge origin/master
. Отже, це майже те саме, що робити два кроки вручну, але є деякі тонкі відмінності, які, ймовірно, не надто стосуються вас. (Зокрема, fetch
крок, який виконується, 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, який тепер оновлює посилання на "віддалену гілку". (Як зазначається у випуску, це було обдумане дизайнерське рішення пропустити оновлення, але виявляється, що більшість людей вважають за краще цей git оновити його. Якщо ви хочете, щоб стара віддалена гілка SHA-1, вона за замовчуванням зберігається в , і, таким чином, виходить з рефлогу. Це також дозволяє отримати нову функцію git 1.9 / 2.0 для пошуку відшкодування за течією.)