Восстановить список коммитов после отмены интерактивной перебазировки в git?

Моя ситуация: есть два пульта, origin а также fork (последний принадлежит мне). Я проверил origin/devel, изменил некоторый код и зафиксировал как 5x в мою локальную ветку test, Я подтолкнул свои коммиты к fork/test,

Затем я начал интерактивную перебазирование, в то время как на моем местном test ветка:

git rebase -i --onto origin/devel

Git открыл редактор со списком моих 5 коммитов, готовых выбрать, сквош или что-то еще.

Я случайно закрыл редактор вместо удаления всего или Ctrl+C и git rebase --abort в консоли git. Таким образом, начался ребаз.

Чтобы отменить это, я использовал git reflog а также git reset --hard HEAD@{...} а также git checkout fork/test -B test позже, так как мой пульт также должен содержать состояние предварительной ребазировки. Кажется, что все они восстанавливают состояние, но если я снова начну перебазирование, в списке не будет коммитов (только noop запись).

Как восстановить исходное состояние перед перебазированием, чтобы снова отобразился исходный список фиксации?

Отмена мерзавца git не покрывает эту проблему. Меня в основном интересует, почему это происходит и как действительно отменить ребаз, а не как изменить rebase команда, чтобы получить список фиксации снова (как я уже сказал, git reset а также git checkout НЕ отменил это должным образом с моей точки зрения).

Конечная цель состоит в том, чтобы перебазировать мой test перейти на современную origin/devel в более поздний момент, раздавив все мои коммиты, так как test отклонился от origin/devel,

//edit: похоже, что Git забыл точку ветвления. git merge-base --fork-point origin/devel возвращает origin/devel совершить, прежде чем мои собственные коммиты, однако, и git rebase -i that-commit дает мне начальный список коммитов. Так почему же --onto больше не делать то же самое?

0 ответов

Другие вопросы по тегам