Сложный интерактивный ребаз за один шаг?
У меня есть две ветви в Git с этой формой.
* fffffff commit f
* ddddddd commit d
* bbbbbbb commit b
| * eeeeeee commit e
| * ccccccc commit c
| * aaaaaaa commit a
|/
* 2222222 base revision 2
* 1111111 base revision 1
Я хочу перебазировать и изменить порядок коммитов, как я бы сделал с rebase --interactive. Однако я хочу чередовать несколько коммитов и получить такую форму.
* ffffff2 commit f
* eeeeee2 commit e
* dddddd2 commit d
* cccccc2 commit c
* bbbbbb2 commit b
* aaaaaaa commit a
* 2222222 base revision 2
* 1111111 base revision 1
Есть ли способ сделать это ребаз за один шаг? Я попытался сделать это в два этапа, перебросив коммит b поверх коммита e, а затем выполнил вторую интерактивную перебазировку для сортировки всех коммитов. Проблема в том, что я получаю конфликты слияния (например, между коммитом b и коммитом e), которые я не вижу иначе (размещая коммит b после коммита a), и не стоит разрешать конфликты.
1 ответ
Начните с любой отдельной ветви (BranchWithF или BranchWithE) и выполните интерактивную перебазировку, например
git checkout BranchWithF git rebase -i HEAD~3
Когда появится редактор и список коммитов, добавьте (читай: наберите на клавиатуре...) и чередуйте
выбрать ааааааа выбрать ccccccc выбрать еееееее
в список, как вы считаете нужным.
После этого у BranchWithF будут все 6 коммитов, и вы можете выбросить BranchWithE (у которого еще есть 3 коммита).