К сожалению, это один из случаев, когда Git довольно слаб.
В базовой системе есть вещи, которые облегчили бы «возврат туда, где я был несколько шагов назад» (ну, это было бы просто , даже с интерактивной перебазировкой, если бы Git сохранял листы инструкций перебазирования для выполнения с каждого шага, что не делает, но может сделать довольно легко). Но в коде перебазирования нет ничего, что бы на самом деле этого достигло.
Если вы до сих пор вкладываете много работы в свои коммиты, вы можете прямо сейчас установить название ветки или тега на своем отдельном HEAD:Например,
git tag temp-save
, а затем используйте git rebase --abort
для выхода из всей перезагрузки.
В противном случае используйте git rebase --abort
для выхода из всей в любом случае перебазируйте.
Затем начните все сначала с git rebase
.
Когда вы столкнетесь с конфликтом, который вы уже разрешили, вы можете повторно использовать любой коммит, сделанный вами в вашемранее, теперь прервано, выполните перезагрузку, запустив:
git log temp-save
и найдя коммит, который вы сделали в предыдущем запуске. Используйте:
git reset --hard
git read-tree -u <hash>
- или проще, но я не проверял это:
git read-tree --reset -u <hash>
- с хешем, найденным в выводе temp-save
из завершенной ребазы, чтобы загрузить вашИндекс и дерево работ из работы, которую вы сделали ранее, как найдено git log temp-save
. Вы можете исправить это дальше, если нужно, и git rebase --continue
. Как только вы достигнете точки, с которой вы хотели перемотать, вы можете удалить временную ветку или тег:
git tag -d temp-save
, и коммиты, сделанные вами в первом раунде перебазировки, станут очень трудно найти.