I usually rebase
when I pull in changes from my teammates, and often time I have conflicts:
... CONFLICT (content): Merge conflict in app/views/search/index.html.erb Auto-merging public/stylesheets/application.css CONFLICT (content): Merge conflict in public/stylesheets/application.css Failed to merge in the changes. Patch failed at 0001 organizing When you have resolved this problem run "git rebase --continue". If you would prefer to skip this patch, instead run "git rebase --skip". To restore the original branch and stop rebasing run "git rebase --abort".
So after opening each file with a conflict, fixing it then committing the fixed files:
~/Projects/myApp[956f6e1...]% git rebase --continue You must edit all merge conflicts and then mark them as resolved using git add
I still get the same error...
~/Projects/myApp[64b3779...]% git rebase --continue Applying: organizing No changes - did you forget to use 'git add'? When you have resolved this problem run "git rebase --continue". If you would prefer to skip this patch, instead run "git rebase --skip". To restore the original branch and stop rebasing run "git rebase --abort".
I've sort-of always had this problem, but I guess never really chose to address it, I would I always just get lazy and git rebase --skip
.
How do I actually resolve the conflict the right way?
The git rerere functionality is a bit of a hidden feature. The name stands for “reuse recorded resolution” and, as the name implies, it allows you to ask Git to remember how you've resolved a hunk conflict so that the next time it sees the same conflict, Git can resolve it for you automatically.
So after opening each file with a conflict, fixing it then committing the fixed files...
The problem is that you aren't supposed to commit
the fixes. If a.txt
has a merge conflict, then your shell log should look like:
$ vim a.txt # fix conflict $ git add a.txt $ # no commit between add and rebase! $ git rebase --continue
Calling git rebase --continue
will take care of the commit itself.
I'm not sure how to "get back" to before your commit, when you're in the middle of a rebase. git reset --hard HEAD
would probably do the trick, but personally I'd feel safer just going straight to git rebase --abort
and starting over without committing in the middle.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With