I\'m doing a long git rebase
with a lot of commits. I accidentally --skipped
a commit where there were some conflicts which I resolved. I should have d
I found a way which "worked for me":
During a rebase lots of things are happening in the .git/rebase-apply
directory. Amongst others there is a file called next
. next
is containing a number which corresponds to a file which is residing in the .git/rebase-apply
as well. This file contains information about the commit which is currently being processed. For example:
$ cat .git/rebase-apply/next
0260
$ less .git/rebase-apply/0260
Git seems to keep the commits which are skipped as the above mentioned files. Whereas files corresponding to commits which have been applied are not there anymore. The commit I accidentally skipped was called 0259 and the file was still present.
Here is what I did:
$ echo "0258" > .git/rebase-apply/next
With that I told git that currently the 258th commit is processed (which previous applied correctly). Then I did
$ git rebase --skip
to tell git to forget this one and, voila, I could again work on the skipped commit, correct the conflicts and --continue
. It has worked.