Кроки, які ви перерахували, працюватимуть, але існує довший шлях, який дає вам більше можливостей:
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 для пошуку відшкодування за течією.)