Я предполагаю, что вы не использовали опцию -p
для git rebase, а это значит, что сделанное вами объединение коммитов D и E было уничтожено. Если это все, что случилось, это просто: просто потяните снова. Если это то, что произошло, ваша история будет выглядеть так:
- A - B' - C' - F' - G' - H' (master)
\
D - E (origin/master)
Это ваше расхождение!
Если вы действительно сохранили слияние, то вполне возможно, что это только потому, что за это время что-то новое было выдвинуто:
- A - B' - C' - X' - F' - G' - H' (master)
\ /
D - E -------- - Z (origin/master)
и поэтому решение, опять же, будет тянуть.
Если, однако, вы выдвинули что-то, содержащее исходный коммит B, то вам не следовало бы перебазировать. Это всегда вызывает расхождение, и это не забавный вид. Ваша история будет выглядеть так:
B' - C' - F' - G' - H' (master)
/
- A - B - C - X - F - G - H (origin/master)
\ /
D - E ------
Фундаментальный дизайн git заключается в том, что SHA1 коммита зависит от SHA1 его родителя и, следовательно, от всей цепочки предков. Вот почему после перебазирования я поставил «прайм» на все. Даже если вы не изменили содержимое C, коммит будет изменен. (Другая возможность, что вы сохранили слияние и выдвинули, должна быть выведена как комбинация двух последних картинок.)