Предположим, у меня есть репозиторий вроде этого:Как перенести фиксацию через фиксацию слияния?
I --- C --- M master
\ /
`- A -´ topic
где M
является слияние совершить включение topic
в master
.
Позже я нашел ошибку в C
, поэтому я делаю фиксации ее фиксации на master
ветви, на вершине M
:
I --- C --- M --- C1 master
\ /
`- A -´ topic
, но в идеале я хотел бы историю, чтобы выглядеть следующим образом:
I --- C --- C1 --- M master
\ /
`- A --------´ topic
Как я могу переписать историю так, чтобы перед слиянием C1
появился M
?
я мог удалить M
, применить патч, сделанное C1
, и объединить topic
в master
снова, решить все конфликты снова, но я хотел бы избежать усилий, и я бы предпочел, чтобы сохранить первоначальные фиксации информации (автор, дата и т. д.), если это возможно, что снова отменяет git commit
. Я надеюсь, что это возможно с git rebase
, но я потерпел неудачу, либо один, либо оба из -p
и -i
.
Выполнено ли создание слияния, созданное 'git rebase -p' правильно? Как и в случае, правильно ли его родители «C1» и «A»?У меня возникли проблемы при сбрасывании слияний, поскольку изменения слияния получают повторное воспроизведение как нормальное коммитирование, а не слияние. – LopSae
@LopSae: Да, объединение слияния производится поверх C1 'и A. Сохраняющиеся слияния - это точка '-p' (aka' --preserve-merges'), но есть ошибка об использовании '-p' и '-i' вместе упомянуты в' git-rebase (1) '. – musiphil