#git
#git
Вопрос:
У меня есть три ветви: master, branchA и BranchB. BranchB ответвляется от branchA и в конечном итоге будет объединен с branchA.
K---L---M---N---O branchB
/
E---F---G---H---I---J branchA
/
A---B---C---D master
Мне нужно было получить изменения от master в обеих ветвях, поэтому я выполнил следующее
branch-a> git fetch origin master
branch-a> git rebase -i origin/master
branch-a> git push -f
Это правильно перебазировало branchA против master, но у меня возникли проблемы с BranchB. Попытка перебазировать его на branchA (который теперь имеет изменения от master) работает не так, как я надеялся. Я получил огромное количество конфликтов слияния, когда должно быть 0, поэтому я прервал перебазирование. С небольшими потерями.
Когда я смотрю на свой PR для BranchB (базовой ветвью которого является A), теперь он показывает историю фиксации для branchA И B, когда это должно быть просто B.
Ответ №1:
Это то, что я бы сделал:
git rebase --onto=branchA branchB~3 branchB
Вы могли бы сделать все это одним выстрелом, подобным этому:
git checkout branchB
git rebase master
git branch -f branchA branchb~3
Комментарии:
1. Должно ли это ‘3’ быть фактическим количеством коммитов в BranchB?
2. Отредактировал сообщение, чтобы отразить фактическое количество коммитов и прояснил историю коммитов.
3. @SamPinheiro
branchB~3
имел в видуG
вашу диаграмму, пока вы не исказили ответ, изменив диаграмму.4. Я не хочу ничего нарушать, поэтому мне просто нужен точный ответ. В предыдущем примере были branchA и B с одинаковым количеством коммитов, поэтому я хочу убедиться, что число правильное (а также где мне нужно запустить команду)
5. Теперь это
branchB~5