Как перебазировать локальную ветку с удаленного мастера - PullRequest
777 голосов
/ 28 октября 2011

Я клонировал проект из главной ветки из удаленного репозитория remote_repo. Я создаю новую ветку и обязуюсь этой ветке. Другие программисты подтолкнули remote_repo к основной ветке. Теперь мне нужно переместить мою ветку RB на remote_repo master. Как это сделать? Какие команды набрать на терминале?

Ответы [ 5 ]

1079 голосов
/ 28 октября 2011

Сначала извлеките нового мастера из репозитория upstream, затем перебазируйте свою рабочую ветку на это:

git fetch origin            # Updates origin/master
git rebase origin/master    # Rebases current branch onto origin/master

Обновление : пожалуйста, смотрите Ответ Пола Дрейпера для более краткого способа сделать то же самое - последние версии Git предоставляют более простой способ сделать эквивалент вышеупомянутых двух команд.

729 голосов
/ 26 августа 2013
git pull --rebase origin master
# where --rebase[=(false|true|merges|preserve|interactive)]
155 голосов
/ 28 октября 2011

После изменений, внесенных в вашу ветку, извлеките мастер и потяните, чтобы получить изменения из репо:

git checkout master
git pull origin master

Затем оформите свою ветку и перенесите изменения на master:

git checkout RB
git rebase master

или две последние команды в одной строке:

git rebase master RB
87 голосов
/ 11 сентября 2017

Примечание: Если у вас уже есть широкие знания о перебазировании, тогда используйте быструю перебазировку под одним вкладышем. Решение: Предполагая, что вы работаете в своей ветке, и вы единственный, кто работает над ней.

git fetch && git rebase origin/master

Разрешение любых конфликтов, тестирование кода, принятие и отправка новых изменений в удаленную ветвь.

                            ~:   For noobs   :~

Следующие шаги могут помочь любому, кто не знаком с git rebase и хочет сделать это без хлопот

Шаг 1: Предполагая, что в данный момент в YourBranch нет изменений и изменений, которые необходимо внести в YourBranch. Мы в гостях у YourBranch.

git checkout YourBranch
git pull --rebase

Что случилось? Извлекает все изменения, сделанные другими разработчиками, работающими в вашей ветке, и отменяет ваши изменения поверх него.

Шаг 2: Разрешение любых возникающих конфликтов.

Шаг 3:

git checkout master
git pull --rebase

Что случилось? Извлекает все последние изменения с удаленного мастера и восстанавливает локальный мастер на удаленном мастере. Я всегда держу удаленный мастер в чистоте и готовлюсь к выпуску! И предпочитаю работать только на мастере или филиалах локально. Я рекомендую делать это до тех пор, пока вы не получите руку на изменения или коммиты git. Примечание. Этот шаг не требуется, если вы не обслуживаете локальный мастер, вместо этого вы можете напрямую выбрать и перебазировать удаленный мастер в локальной ветке. Как я уже упоминал в одном шаге в начале.

Шаг 4: Разрешение любых конфликтов, которые возникают.

Шаг 5:

git checkout YourBranch
git rebase master

Что случилось? Произошла ребаз на мастере

Шаг 6: Разрешение любых конфликтов, если они есть. Используйте git rebase --continue, чтобы продолжить перебазирование после добавления разрешенных конфликтов. В любое время вы можете использовать git rebase --abort, чтобы прервать ребаз.

Шаг 7:

git push --force-with-lease 

Что случилось? Отправка изменений на удаленный YourBranch. --force-with-lease будет проверять, есть ли какие-либо другие входящие изменения для YourBranch от других разработчиков, пока вы делаете ребазинг. Это супер полезно, а не силовой толчок. В случае каких-либо входящих изменений, затем загрузите их, чтобы обновить локальный YourBranch, прежде чем отправлять изменения.

Зачем мне нужно вносить изменения? Чтобы переписать сообщение коммита в удаленном YourBranch после правильной перезагрузки или если какие-либо конфликты разрешены? Затем вам нужно отправить внесенные вами изменения в локальное хранилище в удаленное хранилище YourBranch

.

Yahoooo ...! Вы успешно завершили ребазинг.

Вы также можете заняться:

git checkout master
git merge YourBranch

Когда и почему? Слияние вашей ветки с master, если это сделано с изменениями, внесенными вами и другими со-разработчиками. Что делает YourBranch актуальным с master, когда вы захотите поработать над той же веткой позже.

                            ~:   (๑ơ ₃ ơ)♥ rebase   :~
5 голосов
/ 03 января 2019

git fetch origin master:master извлекает последнюю версию мастера, не проверяя ее.

Так что все, что вам нужно, это:

git fetch origin master:master && git rebase master ?

...