Error with git rebase (“could not apply…”)

后端 未结 2 1637
执念已碎
执念已碎 2021-01-30 10:55

I\'m the administrator of the GitHub repository https://github.com/plison/opendial. I would like to reduce the number of commits on the repository, since the repository already

相关标签:
2条回答
  • 2021-01-30 11:15

    The history of your project seems to contain a number of merge commits recently (presumably you made those). The presence of merge commits in what you want to interactively rebase usually causes problems. (An interactive rebase pretty much assumes a linear history, but merge commits are not linear.)

    Your project history also somehow seems to have two parallel histories that are merged together in commit 11b3653 (use a tool like gitk or tig to see this, it's not shown well on Github's web interface).

    I would suggest that you attempt to first flatten your history to get rid of the parallel histories, and to remove the merge commits. Then, once you have a strictly linear history, you can set about rewriting the history to remove all the debugging churn.

    0 讨论(0)
  • 2021-01-30 11:15

    As a reminder to myself on how to resolve this:

    The error message is not very informative. If you type

    git rebase --continue
    

    you realize the error is because of a merge conflict that git cannot resolve by itself, and needs your help.

    To see what files have conflicts, type

    git status
    

    Resolve the merge conflicts in your favorite editor/IDE (hint: this should start with i and end with ntelliJ)

    Mark resolution with

    git add .
    

    If all the conflicts are resolved, you should see something like this:

    (all conflicts fixed: run "git rebase --continue")
    

    So continue your rebase with

    git rebase --continue
    

    Hopefully your rebase should now be successful

    git status
    

    shows:

    On branch feature/DIG-19302-Upgrade-mockito-v2
    Your branch is behind 'origin/feature/your-feature-branch' by 2 commits, and can be fast-forwarded.
    (use "git pull" to update your local branch)
    
    nothing to commit, working directory clean
    

    Don't do a git pull. If you do, you will only overwrite your merge conflicts. Instead push your merge conflict resolutions to the branch) with

    git push --force
    

    You're done! Your git log should show only 1 commit now (which is the forced update you just did)

    0 讨论(0)
提交回复
热议问题