Resolve merge conflicts
A merge stops with three conflicted files. In the next few minutes you will see exactly which lines disagree, keep ours, theirs or both for each one, edit the one that needs a human, and finish the merge, with a way out at every step if you change your mind.
Know where you are
When a merge, rebase, cherry-pick or revert stops on conflicts, a banner appears above every view. It names the operation, "Merging feat/search into main", and the state: "3 files still have conflicts." Its buttons are "Show conflicts", Abort and, for a rebase or cherry-pick, Skip. The Changes view gains a Conflicted group at the top of its list.
The banner stays until you continue or abort, so you can switch views, read history and even make other changes without losing track.
Resolve a file by choosing sides
- Click "Show conflicts", or press ⌘1 and pick a file under Conflicted. The resolver opens with "Ours: main" and "Theirs: feat/search" at the top, so you always know which side is which.
- Each conflict in the file is a block with both versions. Click "Keep ours", "Keep theirs" or "Keep both" on the block. The "more" menu adds "Keep both, theirs first", "Keep the base" (the version before either side changed it), and "Undo this choice".
- Unchanged lines between conflicts are folded; "Show 12 unchanged lines" opens them when you need the context.
- The footer counts down: "Choose a side for 2 more conflicts." becomes "Every conflict has a choice." Switch the segmented control from Choose to Result to read the file as it will be saved.
- Click "Resolve file". Mergepond writes the result, stages the file and moves on; the toast reads "Marked src/search.ts resolved and staged it."
Files that were deleted on one side and changed on the other get a whole-file choice instead: "Keep the changed file" or "Delete the file". Binary files offer "Keep ours" and "Keep theirs" with the branch names.
Resolve a file by hand
Sometimes the right answer is neither side. Open the file in your editor, write the lines you actually want, remove the <<<<<<<, ======= and >>>>>>> markers, and save. Back in Mergepond the file's button reads "Mark resolved" rather than "Resolve file"; click it to stage your version.
You can mix the two: choose sides for the simple conflicts in the resolver, then edit the one that needs thought.
Finish
When the banner says "Every conflict is resolved." and "Ready to continue.", click "Continue merge". For a merge, a small sheet shows the merge commit's message; edit it if you like and press ⌘⏎. The merge commit lands at the top of History.
For a rebase or cherry-pick with several steps, the banner counts them, "Rebasing onto main, step 3 of 8", and the next conflict, if there is one, opens the same way. Skip leaves out the commit that is conflicting and moves to the next.
If you click Continue too early, Mergepond does not guess: "Resolve 2 conflicted files first, then continue."
Get more from it
- "Keep the base" is the quiet hero when both sides made a change that should not have happened; it returns the lines to how they were before either branch touched them.
- Conflicts between two coding agents' branches look the same as any other. Merge the agent's branch into yours and resolve here rather than asking the agent to rebase blind. See Run coding agents in parallel.
- The commit button in the Changes view refuses with "Resolve the conflicts first." while any file is conflicted, so you cannot commit a half-resolved tree by accident.
- During a long rebase, the palette's "In progress" group has Continue, Skip, Abort and "Show N conflicted files" so you can drive it from ⌘K.