In the middle file (future merged file), you can navigate between conflicts with ]c and [c.
Choose which version you want to keep with :diffget //2 or :diffget //3 (the //2 and //3 are unique identifiers for the target/master copy and the merge/branch copy file names).
:diffupdate (to remove leftover spacing issues)
:only (once you’re done reviewing all conflicts, this shows only the middle/merged file)
:wq (save and quit)
git add .
git commit -m “Merge resolved”
If you were trying to do a git pull when you ran into merge conflicts, type git rebase –continue.
_________________
|LOCAL|BASE|REMOTE|
|-----------------|
|_____MERGED______|
- (left)
LOCAL– this is file from the current branch - (mid)
BASE– common ancestor, how file looked before both changes - (right)
REMOTE– file you are merging into your branch - (bottom)
MERGED– merge result, this is what gets saved in the repo
Let’s assume that we want to keep the change from REMOTE. For that, move to the MERGED file (Ctrl + w, j), move your cursor to a merge conflict area and then:
:diffget RE
This gets the corresponding change from REMOTE and puts it in MERGED file. You can also:
:diffg RE " get from REMOTE
:diffg BA " get from BASE
:diffg LO " get from LOCAL
Save the file and quit (a fast way to write and quit multiple files is :wqa).
]c :: next difference[c :: previous differencedo: diff obtaindp: diff putzo: open folded textzc: close folded text:diffupdate: re-scan the files for differences