Merge Desk
Back to SkillSafe

Your merge is stuck. Work it hunk by hunk.

Paste the file git stopped on — the one still carrying <<<<<<<, ======= and >>>>>>>. A real parser reads every hunk in your browser for free, resolves the ones that are provable, and refuses to guess at the rest. Then triage each hunk with both sides' intent recovered, merge the hard ones with every dropped line named, or have your resolution reviewed before you push it.

Both buttons load a paste whose saved model run ships with this page, so you can see a whole answer — including the rewritten file — without signing in and without spending a credit.

Decide
Merge
Ship

Triage every hunk

Before you touch anything: what each side was trying to do, and how each hunk should be settled.

Drop the conflicted file (or several) here, or paste below. Everything is read in your browser. Nothing uploads until you run.
nothing pasted yet

Several files? Separate them with a # file: path/to/file line, or just drop them all in at once. A paste with diff --git or +++ b/path headers is split automatically.

Paste the conflicted file to begin.

Your past runs

Runs you make while signed in are saved to your account and listed here.

What this does, and what it does not

The parser is a real state machine over the marker lines, not a keyword search. It handles two-way markers and diff3 markers, several files in one paste, markers nested inside a hunk from an earlier bad merge, and a stray ======= left behind by hand-editing a file part-way through a merge — and it reports those cases rather than quietly mis-reading them. That is what lets it answer questions a grep cannot: which side is empty as opposed to merely short, whether a side is byte-identical to the merge base, whether two sides differ only in whitespace in a language where whitespace cannot carry meaning, and whether the file is a lockfile that must be regenerated rather than merged.

One case is worth the whole page. With diff3 markers the merge base sits in the file, and if your side is byte-identical to the base then your side changed nothing there — so taking the other side provably loses nothing. Merge Desk applies exactly those hunks for free and leaves every other one alone. Run git checkout --conflict=diff3 <path> before you paste and more of your conflict becomes provable.

The dropped-line check is the other half. Given a proposed resolution it computes which substantive lines from each side are absent, excluding lines that were also in the merge base because those were never that side's change. Those facts are handed to the model as things it must reconcile, and the answer is checked against them afterwards — if a flag goes unaccounted for, this page says so.

It reads; it does not run. Merge Desk never invokes git, never touches a repository, never writes a file to your disk and never executes your code. It cannot tell you whether the merged code is correct — only whether text that existed has gone missing, and what a careful colleague would want re-tested. A token you paste is a token you should rotate: the scanner names its location without repeating its value.

Frequently asked

Does Merge Desk run git or touch my repository?

No. Merge Desk never runs git, never reads a repository, never writes a file to disk and never executes your code. It works only from the text you paste. Commands it shows you are for you to read and run yourself; nothing on the page runs them.

What works before I sign in?

The whole deterministic half. The conflict parser, the per-hunk table, the rule flags, the mechanical resolver with take-ours, take-theirs, take-both and provable-only, the dropped-line check on a proposed resolution, and every export of those results run in your browser with no account and no charge. Only the three model lanes are metered.

Why does it keep asking for diff3 markers?

Because with the merge base in the file, a whole class of conflicts stops being a judgement call. If your side is byte-identical to the base then your side changed nothing there, so taking the other side provably loses nothing. Run git checkout --conflict=diff3 on the path before you paste and most conflicts get easier, not harder.

Can it merge a package-lock.json or a yarn.lock?

It will not try, and it says so. A lockfile is generated output whose internal consistency a text merge cannot maintain, so Merge Desk detects the file, refuses to include it in the mechanical resolution, and gives you the regeneration command for your ecosystem instead.

Is this an official tool of the skills it is built on?

No. Merge Desk is a derived work built on two published agent skills: @mattpocock/resolving-merge-conflicts and @obra/requesting-code-review. It is not affiliated with, endorsed by or maintained by those skills' authors, nor by Git, GitHub or the Git project. Git is a trademark of Software Freedom Conservancy.