Разница между оформлением заказа + объединение и извлечение - PullRequest
0 голосов
/ 06 февраля 2019

Предположим, что в моем репозитории git есть две ветви:

  1. Мастер
  2. Тест

В моем локальном репо я в настоящее время на Мастери я хочу объединить обновленную версию Test.

Что бы я сделал, это:

git checkout Test
git pull
git checkout Master
git merge Test

(вероятно, вторая строка бесполезна ..)

Насколько далекокак я понимаю, эта строка:

git pull origin Test

(в первой версии это было "git pull origin / Test", спасибо @Tim, чтобы это исправить)

должно привести мою ветвь Master к аналогичному состоянию (т. Е. Она будет включать изменения из Test).Я знаю, что pull равно fetch + merge , поэтому я немного растерялся.

Вопрос в том, в чем разница между двумя подходами, описанными выше?

1 Ответ

0 голосов
/ 06 февраля 2019

Выполнение следующей команды из ветви Master:

git pull origin Test

избавляет от необходимости менять ветви на Test только для вытягивания.Это эквивалентно этому:

git fetch origin Test && git merge origin/Test

Но кикер в том, что Git выполнит слияние, только если слияние может быть выполнено с помощью ускоренной перемотки вперед.Если это не , возможно, вам придется выполнить явное объединение.

Я могу предложить следующий рабочий процесс в качестве альтернативы git pull origin Test:

# from Master
git fetch origin
git merge origin/Test

Вышеуказанный двухлинейный модуль обновляет локальную ветвь отслеживания origin/Test с последними изменениями с пульта.Затем он сливается Test прямо в вашу ветку Master.Обратите внимание, что нам не нужно было переключать ветви с Master;все слияние было возможно без git checkout.И Git всегда будет сливаться с этим подходом, даже если это объединение приведет к конфликтам.

...