У меня есть локальная ветвь проекта ("configUpdate"), которую я разветвил из чужого проекта, и я внес в нее множество изменений и хотел бы объединить изменения, которые они внесли в мою локальную ветку.
я пробовал
git pull --rebase origin configUpdate
но это не захватило последние изменения - как я могу объединить два? (также для бонусных баллов, что я сделал с pull --rebase
командой?)
Ответы:
Из вашей функциональной ветки (например
configUpdate
) запустите:Или более короткая форма:
Почему это работает:
git merge branchname
берет новые коммиты из веткиbranchname
и добавляет их в текущую ветку. При необходимости он автоматически добавляет коммит "Merge" сверху.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 перемотает ваш мастер на апстрим, затем примените ваши изменения сверху.источник
Я узнал, что это было:
источник
pull --rebase
не работали, потому чтоorigin
указывал на вашу вилку. Это бы сработало, если бы ты это сделалgit pull --rebase upstream/master
.Переключитесь на местный филиал
Слияние удаленного мастера с вашей веткой
Если у вас есть какие-либо конфликты, исправьте их, и для каждого конфликтующего файла выполните команду
Продолжить перебазирование
источник
Git ReBase, похоже, не работает для меня. После git rebase, когда я пытался отправить изменения в свою локальную ветку, я продолжал получать сообщение об ошибке («Подсказка: обновления были отклонены, потому что конец вашей текущей ветки находится за своим удаленным аналогом. Интегрируйте удаленные изменения (например,« git pull »). .. ') перед повторным нажатием. ") даже после git pull. То, что в итоге сработало для меня, было git merge.
Если вы новичок, как я, вот хорошая статья о git merge против git rebase. https://www.atlassian.com/git/tutorials/merging-vs-rebasing
источник