У меня длинная линейная история git. Я хочу переустановить некоторые коммиты, так что я создал ветвь функции и объединил ее с мастером, используя git merge --no-ff master
.Перерыв линейного git совершается на две объединенные ветки
Текущий
A -> B -> C -> D -> E -> F
master
Желаемая
master
A -> B -> E -> F
\ /
C -> D
feature
Я думал, что сделать что-то вроде
git checkout D
git checkout -b feature
git rebase B
git merge --no-ff E
Но D
уже B
в своей истории, так это ничего не делать. Я знаю, как переустанавливать E
B
(Split a git branch into two branches?), но здесь, в нужной версии E
, есть два родителя.
Некоторые дополнительные сведения о том, что первоначально мой проект был структурирован как Desired
, а E
действительно является фиксацией слияния. Я каким-то образом линеаризую свою историю, используя git rebase
, чтобы удалить некоторые нежелательные файлы из старых коммитов.