Zero Signup ToolsFree browser tools

Developer Tools

Merge Conflict Resolver

Paste a file with Git merge conflict markers and resolve each conflict by keeping current, incoming, both, or base. Get a clean file with no markers.

Resolve all as:
488 chars

Conflicts found

2

Choices made

0

diff3 conflicts

1

Markers left in output

0

Resolve each conflict

Default is Keep current until you choose otherwise.

1Conflict at line 4

Current (ours): HEAD

  const name = user.fullName ?? "there";
  return `Welcome back, ${name}!`;

Incoming (theirs): feature/new-greeting

  const name = user.displayName || "friend";
  return `Hello, ${name}.`;
2Conflict at line 15 (diff3)

Current (ours): HEAD

  timeout: 5000,

Base: merged common ancestors

  timeout: 3000,

Incoming (theirs): feature/new-greeting

  timeout: 8000,
  backoff: "exponential",
Clean

What each choice does

Current (ours)

Keeps the lines between <<<<<<< and =======. This is the version already on your branch (HEAD), the side you had checked out when the merge or rebase started.

Incoming (theirs)

Keeps the lines between ======= and >>>>>>>. During a rebase the sides are swapped by Git, so always read the branch labels rather than trusting the words ours and theirs.

Both / Base / Remove

Both keeps current then incoming, one after the other. Base keeps the original merge-base lines, available only on diff3 conflicts that include a ||||||| section. Remove drops every side and leaves nothing for that hunk.

Privacy

Parsing and resolution run entirely in your browser. The file you paste, including private source code, is never uploaded. When the output shows Clean, no conflict markers remain and it is safe to paste back into your editor.

How to use

  1. Paste the file that still contains Git conflict markers into the input, or click Load sample to see how it works.
  2. Read each conflict block: Current (ours) is your branch, Incoming (theirs) is the other branch, and a Base panel appears for diff3-style conflicts.
  3. Choose a resolution per conflict: Current, Incoming, Both, Base, or Remove. Use the Resolve all buttons to apply one choice to every conflict at once.
  4. Watch the markers-left counter. When it reads zero and the output shows Clean, no conflict markers remain.
  5. Click Copy resolved file and paste the result back into your editor, then save and continue the merge or rebase.

About this tool

Merge Conflict Resolver takes a file that Git left full of conflict markers and turns the cleanup into a few clear choices, then hands you a clean version with no markers left behind. When a merge, rebase, cherry-pick, or stash apply cannot reconcile two changes, Git rewrites the file with marker lines: a run of seven or more less-than signs opens your side (the change already on the branch you had checked out, often labeled HEAD), a run of equals signs separates it from the incoming side, and a run of seven or more greater-than signs closes the incoming side with its branch name. Git can also write a third section between two pipe-character markers when the diff3 or zdiff3 conflict style is turned on, showing the original merge-base text that both sides started from, which makes it far easier to see what each side actually changed. This tool parses both shapes exactly the way Git detects them, matching markers only as a run of the marker character at the very start of a line so a row of equals signs inside a code block is not mistaken for a separator. Paste the whole file, and every conflict is listed as its own block with the current, base, and incoming versions shown side by side and labeled with the real branch names pulled from the markers. For each conflict you pick how to resolve it: keep the current side, keep the incoming side, keep both one after another, keep the original base lines when a diff3 section is present, or remove the hunk entirely. Quick actions resolve every conflict the same way at once, which is the common case when you know one branch wins the whole file. The resolved file is rebuilt live as you choose, the context around each conflict is preserved exactly, and a running count shows how many conflict markers remain in the output so you can be certain it is clean before you paste it back into your editor. A note worth remembering: during a rebase Git swaps the meaning of ours and theirs, so the panels are labeled with the branch names from the markers rather than relying on the words alone. Everything runs locally in your browser using plain text parsing, so the file you paste, which may be proprietary source code, is never uploaded, logged, or stored. It pairs naturally with the text diff tool for comparing two versions of a file, the unified diff applier for working with patch files, and the dotenv diff checker for environment files.

Free to use. Works in your browser. No signup, no login.

Related tools

You may also like

All tools
All toolsDeveloper Tools