Из того, что я понимаю, коммит mi
в master
имеет те же изменения, что и коммит mi
в front_end_dev
(i = 1, ..., 5), но у них другой ха sh так как вы говорите, истории разные.
rebase
git checkout front_end_dev
git rebase master
Это будет перебазировать front_end_dev
на master
. Вы бы выстроили все эти коммиты на front_end_dev
(m1 - m9
с последующим m1 - m5 - f1 - f4
). Поскольку коммиты mi
в обеих ветвях имеют одинаковые изменения, эта перебазировка вызовет много конфликтов. После того, как вы разрешите эти болезненные конфликты, вы можете быстро перейти на мастер:
git checkout master
git merge front_end_dev
объединить
git checkout master
git merge front_end_dev
Это самый простой и, возможно, лучший вариант. Вы просто генерируете коммит слияния и разрешаете конфликты.
rebase f1-f4
Если вы действительно уверены, что фиксирует mi
(i = 1, .. ., 5) содержат одинаковые изменения в обеих ветках, возможно, вы захотите перебазировать только коммиты f1-f4
на мастер.
git checkout <hash-commit-f1> # checkout to commit f1
git checkout -b branch_with_fi # create a branch from commit f1
git merge frond_end_dev # add commits f2, f3 and f4 to the new branch
Теперь вы можете перебазировать или объединить новую ветку:
git rebase master
или
git checkout master
git merge branch_with_fi