Git переназначает несколько коммитов в одной ветви на мастер

#git

#git

Вопрос:

Когда я читаю команду rebase в документации git, у меня возникает вопрос. Возможно ли переназначить три коммита x x x в разделе «далее» на мастер?

   o---o---o---o---o  master
           
            o---o---x---x---x  next
  

перебазируйте в

   o---o---o---o---o---x---x---x  master
           
            o---o  next
  

Ответ №1:

Здесь действительно нужны два шага. Сначала сделайте rebase --onto , чтобы перенести 3 лучших коммита из next в master :

 master:  o1 -- o2 -- o3 -- o4 -- o5
                       
next:                   o6 -- o7 -- x1 -- x2 -- x3
  

Используйте:

 git rebase --onto o5 o7
  

Затем удалите 3 верхних коммита из next ветки:

 # from next
git reset --hard HEAD~3
  

Комментарии:

1. приятно git rebase --onto o5 o7 !

Ответ №2:

для этой цели я бы посмотрел на

git cherry-pick для новых коммитов на master

и

git reset --hard для очистки этих коммитов на next

сценарий может выглядеть следующим образом:

 git switch master
git cherry-pick next~2 next~1 next~0
git switch next
git reset --hard HEAD~3
  

Комментарии:

1. Имейте в виду, что o коммиты могут изменить то, что на самом деле делают x коммиты, поэтому вы можете получить не то, что ожидаете, или вам придется выполнить некоторое ручное редактирование, чтобы получить их правильно