Недавно мы столкнулись с проблемой, когда слияние каким-то образом привело к тому, что все изменения, ведущие к одному из родителей, были отменены в коммите слияния, и несколько коммитов были применены после этого момента. Все это было перенесено в наш общий исходный репозиторий. Я хочу иметь возможность отменить неудачное слияние и повторно применить другие наборы изменений. Какой самый простой способ сделать это?
Пример ASCII-искусства:
A-B-C-D
/ \
P-Q M-X-Y-Z
\ /
1-2-3-4
---time--->
Коммит M включил изменения с A по D, но все изменения с 1 по 4 были отменены этим коммитом.
Я хотел бы иметь возможность вернуться назад, например, к набору изменений 4, и заново применить изменения A-D и X-Z, в идеале без ручной переделки каждого изменения.
Если это невозможно, я хотел бы услышать о лучших обходных путях - например, может быть, сделать ответвление от 4, слиться с D, снова соблюдая осторожность, чтобы ничего не сломать, а затем вручную повторно применить X к Z?
(Идеальной ситуацией было бы знать, как это сделать с помощью TortoiseGit, хотя простое знание командной строки должно позволить мне вывести остальное)