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.
Triage every hunk
Before you touch anything: what each side was trying to do, and how each hunk should be settled.
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.
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.