как объединить две ветви, где 1-й имеет один коммит A, а 2-й имеет коммит A с поправкой на B и 3 коммита поверх B? Без фиксации слияния - PullRequest
1 голос
/ 16 января 2020

У меня есть две ветви

branch_a -> -x-x-x-x-x-A-C-D-E (<- A- C -DE - последняя фиксация для branch_a) </p>

branch_b -> -x-x-x-x-x-B(A-amended) (< - B - это коммит, который является измененной версией A, который имеет немного больше изменений по сравнению с A)

Я хочу

branch_a -> -x-x-x-x-A-C-D-E                 
                     \           ->(TARGET_branch=)  -x-x-x-x-x-B-C-D-E ( I know that as B is changed commit id of C,D,E may also change and they will become (e.g.) F-G-H , that is accepted just dont wanna lose the individuality of the commit.
branch_b ->-x-x-x-x-x-B-    

Все это должно быть сделано без любой коммит слияния и без потери коммитов

Одно из возможных решений для меня - взять diff из B и A, go в branch_a и сделать git rebase -i HEAD~4, изменить коммит A с изменениями из B и затем продолжите ребаз.

Теперь это очень грубый способ сделать это.

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

1 Ответ

1 голос
/ 16 января 2020

Это будет rebase --onto, чтобы выбрать только тот коммит, который вы хотите.
Это изменит ветку B, затем вы можете сбросить A на B:

git switch branch_b
git rebase --onto B A branch_a

Только C, D, E будет перебазирован поверх B.

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