Fixing git merge conflicts from vim using vim-fugitive
The vim-fugitive plugin is very useful when it comes to working with git from vim. Whenever I run into a merge conflict, I always have trouble remembering the exact steps needed to resolve them. There’s an excellent Vimcasts video, explaining this in detail, but this post will be a quick cheatsheet on what to do to resolve a conflict.
The scenario is that we’re on the master branch
and trying to merge
my-feature-branch into master
git merge my-feature-branch.
The same two lines have been edited on both branches,
so we have a merge conflict.
If you have vim-fugitive installed,
you can open the diff using the
This opens 3 buffers,
with the target branch (ie. master)
on the left,
and the merge branch on the right.
The central buffer shows the file with the conflict markers.
The unmerged file in the middle buffer
would look something like this:
If you look at the filenames at the bottom of the left and right buffers, you’ll see something like this:
3 that are the part of the path.
We can use partial buffer names,
to refer to the buffers
when we want to pick one of the changes from those buffers.
(The numbers there could be different for your buffers,
so edit the commands below accordingly.)
We want the changes from the feature branch to be kept,
and delete the rest.
To do this,
keep the cursor on the first line of the conflict marker,
ie. the line with
<<<<<<< HEAD on it.
Now run the
diffget command with the name of the buffer
that you want to merge in.
In the above example,
we wanted to keep the changes from the feature branch,
//3 in the buffer name.
So we can run the command
to get the changes into the middle buffer.
This will mess with how the diffs get displayed,
so you can run
:diffupdate to refresh the diffs.
If you’re using the
you can navigate between changesets
Once you’ve fixed all the conflicts,
keep only the merged buffer open,
and close the other buffers.
will close all buffers except the currently active one.)
You can now save and commit the file
with the conflicts resolved.