Перебазировать, не удаляя старую ветку - PullRequest
2 голосов
/ 25 марта 2019

У меня следующая ситуация в Git:

A--B--C--D--E--F--G
       \--H--I

Я хочу перебазировать ветку, но сохранить оригинальную ветку.Итак, я хочу это:

A--B--C--D--E--F--G
       \--H--I     \--H'--I'

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

Это в ситуации, когда основная ветка фактически основана на другом репозитории и является длиннойдалеко позади оригинального хранилища.Я пытаюсь вернуть нашу (HI) ветку в последнюю версию оригинальной основной ветки.

1 Ответ

6 голосов
/ 25 марта 2019

Просто создайте новую ветку и работайте над ней.

git checkout your-old-branch
git checkout -b to-be-rebased
git rebase master

и работайте на to-be-rebased, пока у вас не появится что-то работоспособное.

Таким образом, your-old-branch все еще указывает на тот же точный коммит, без изменений.


... и два первых этапа проверки можно объединить в один (как указано Джонатон ), чтобы избежать ненужного этапа проверки:

git checkout -b to-be-rebased your-old-branch

Наконец, чтобы быть справедливым по отношению к комментарию Лассе , это правда, что мы могли бы перейти с cherry-pick к тому же эффекту:

git checkout -b new-branch master
git cherry-pick master..your-old-branch
...