Resolve conflicts by hand

The conflict resolver: decide each conflicting region yourself, then commit the merge.

On this page

When a pull request conflicts with its base branch, GitHub will not merge it and its own editor handles only simple cases. Limn’s conflict resolver lets you settle the conflicts inside Limn. You see your version, the base branch’s changes and the result side by side, decide each conflicting region, and commit the merge. Limn never picks a side for you, and nothing is pushed until you press the button.

#Open the resolver

Press Resolve conflicts. You find it on the pull request’s Overview tab (the Conflicts row), in the merge controls, and on the Pending board’s conflicts card. It shows only on open pull requests you can push to. If you cannot push, you see the conflict and a link to GitHub instead. You can resolve one pull request at a time.

#Decide each change

Illustration: Your version on the left, the base branch’s changes on the right, the result in the middle.
  • Left: Your version, the pull request’s branch.
  • Right: Changes from main (with your base branch’s name).
  • Middle: the result. It starts from the last commit both branches shared, and changes only when you decide a region. Every region starts as Needs a decision.

For each region, choose one of:

  • Take your version or Take the change from main;
  • Take both — yours first, then main or the other way round, and Swap which side goes first;
  • Ignore this change and keep the ancestor;
  • Edit the result for this change, to type the result yourself;
  • Undo this decision.

To compare with the starting point, open Merge base, the last commit both branches shared. For a whole file at once, use Take your file or Take main’s file.

Take the obvious ones

Take the obvious ones applies every change only one side made, and merges conflicts whose edits do not overlap. It never picks a side where both sides changed the same lines. You still decide those.

#Commit and push

  1. Decide every region in every file. Until you have, Commit and push stays shut and What is left to decide lists each file still open.
  2. Press Commit and push in the toolbar. The landing step shows What is being committed.
  3. Under How to land it, choose Merge (one merge commit on your branch, plain push) or Rebase (replays your commit onto the base branch and force-pushes safely).
  4. Under Where to put it, choose Push to your branch, or Commit to a new branch, with Open a pull request for it if you want one.
  5. Press Commit and push.
Illustration: Nothing is pushed until you press this.

#Let AI do it instead

If you would rather not decide region by region, AI Fix can merge the base branch in for you in its sandbox, and you push the result once you have read it. See Resolve merge conflicts with AI Fix.

#Why it helps

A conflict is often a few lines, but settling it usually means checking out the branch, merging, fixing and pushing. The resolver does it in the browser, keeps every decision yours, and will not commit a half-finished merge. Once it is resolved, see Can it land?.