Git - как перемещать коммиты между ветками - PullRequest
1 голос
/ 16 октября 2019

У меня есть следующее:

branch0  ---  commit1 --- commit2 --- branch2 --- commit3
   |
branch1
   |
commit4
   |
commit5

Я хотел бы изменить его на следующее (т.е. переместить все из commit1):

branch0
   |
branch1
   |
commit4
   |
commit5  ---  commit1 --- commit2 --- branch2 --- commit3

Я пытался использовать rebase и cherry-pick, но я недостаточно осведомлен, поэтому любые предложения приветствуются.

Спасибо

ОБНОВЛЕНИЕ

Из ответа Мимикрии, приведенного ниже, я пытаюсь сделать следующее:

git checkout branch0
git checkout -b temp
git rebase branch1
## fix conflicts
git add .
git commit -am "rebase applied"
git rebase --continue
git branch -mv -f branch1

Я получаю следующую ошибку:

Неустранимый: Неверное имя ветви: 'HEAD'

git status
rebase in progress; onto 89844e6
You are currently rebasing branch 'temp' on '89844e6'.
  (all conflicts fixed: run "git rebase --continue")

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Предполагая, что это все локальные филиалы (еще не опубликованные или не опубликованные, но не использованные кем-либо еще), эти шаги необходимо предпринять.

git checkout branch2

git checkout -b temp создать временную ветвь на основе branch2

git rebase branch1 теперь у вас есть то, что вы нарисовали на диаграмме, но это называетсяtemp

git branch -mv -f branch1 принудительно переименуйте ветку

и, наконец, удалите коммиты из branch2:

git checkout branch2

git reset --hard branch0

0 голосов
/ 16 октября 2019

Все, что вам нужно сделать, это вытащить ветку 1 в ветку 2

Шаг:

git checkout branch2
git pull origin branch1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...