Hi, I’ve got myself stuck on an issue, I’ve started a big rebase (I know that was already a bad idea to begin with, but, just in case, the information I’m looking for could always come in handy in other occasions), I reordered a few commits and squashed some, while in the process I resolved a few conflicts, then after I resolved one of them and got to the next conflict I realised that I shouldn’t have put a certain commit there, is there a way to rewind the process to the previous step while staying in the rebase? That way I could move the commit to where it should be and continue.
I know you can edit the todo (git --edit-todo
), but that only works for the next commits, I also can’t just reset back by the number of commits I want, e.g. git reset --hard HEAD~4
, because for the rebase those commits remain as done and doing git rebase --continue
only brings me to where I am already, the next conflict to resolve.
So I wonder, is there a way to move out commits of the done list back into todo? Also for example if I trashed an unmerged file completely while messing around, so I can get it back to its initial state, this would be extremely useful
If I’m understanding you correctly, you can create a branch to mark where you are
git branch tmp
then abort the rebase. Switch totmp
get the history like you wanted, then switch back. Finally do agit rebase -i
again, but immediatelygit reset --hard tmp
. Now you have the resolved commits you want, and can delete any you don’t want to do again withgit --edit-todo
.Maybe.
Hmm, that sounds like it could be what I’m looking for, had never consider you could branch while in the middle of a rebase, nice!