Как объединить удаленный мастер в локальную ветвь

У меня есть локальная ветвь проекта ( "configUpdate" ), которую я раскошелил из другого проекта, и я набросил на него изменения и хотел бы объединить изменения, которые они внесли в мой локальная ветвь.

Я пробовал

git pull --rebase origin configUpdate

но он не схватил последние изменения - как я могу объединить эти два? (также для бонусных очков, что я сделал с командой pull --rebase?)

Ответ 1

Я узнал, что это было:

$ git fetch upstream
$ git merge upstream/master

Ответ 2

Как насчет (если вы в настоящее время находитесь в configUpdate ветки):

git fetch
git rebase origin/master

В двух словах:

  • git merge branchname берет новые коммиты из ветки branchname и добавляет их в текущую ветку. При необходимости он автоматически добавляет фиксацию "Слияние" сверху.

  • git rebase branchname берет новые коммиты из ветки branchname и вставляет их "под" ваши изменения. Точнее, он изменяет историю текущей ветки таким образом, что она основана на кончике branchname, с любыми изменениями, которые вы сделали поверх этого.

  • git pull в основном совпадает с git fetch; git merge origin/master.

  • git pull --rebase в основном совпадает с git fetch; git rebase origin/master.

Итак, почему вы хотите использовать git pull --rebase, а не git pull? Вот простой пример:

  • Вы начинаете работу над новой функцией.

  • К тому моменту, когда вы готовы внести изменения, некоторые коммиты были нажаты другими разработчиками.

  • Если вы git pull (который использует слияние), ваши изменения будут похоронены новыми коммитами в дополнение к автоматически созданной фиксации слияния.

  • Если вы git pull --rebase вместо этого, git ускорит переадресацию вашего хозяина вверх по течению, а затем примените ваши изменения сверху.

Ответ 3

Перейдите в локальную ветвь

> git checkout configUpdate

Объединить удаленный мастер с вашей веткой

> git rebase master configUpdate

Если у вас возникли конфликты, исправьте их и для каждого конфликтующего файла выполните команду

> git добавить [path_to_file/conflicted_file] (например, git добавить приложение/активы/javascripts/test.js)

Продолжить rebase

> git rebase -continue

Ответ 4

git rebase, похоже, не работает для меня. После git rebase, когда я пытаюсь нажать на изменения в своем локальном ветки, я продолжал получать сообщение об ошибке ( "hint: Updates были отклонены, потому что конец вашей текущей ветки находится за ее удаленным экземпляром". Интегрируйте удаленные изменения (например, "git pull... ') перед повторным нажатием." ) даже после git pull. Что, наконец, сработало для меня, было git merge.

git checkout <local_branch>
git merge <master> 

Если вы новичок, как я, вот хорошая статья в разделе git merge vs git rebase. https://www.atlassian.com/git/tutorials/merging-vs-rebasing