Undoing a git rebase --skip - reapply a commit during a rebase

前端 未结 2 965
一向
一向 2021-02-03 19:22

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

2条回答
  •  盖世英雄少女心
    2021-02-03 20:01

    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.

提交回复
热议问题