Resolve three-way text conflicts
Prepare ancestor, local and remote text, choose each conflicting region, and return the saved output to your existing workflow.
Merge three versions
Combine local and remote edits against a common ancestor, inspect conflicts and save the complete chosen text.
Prepare the three roles manually
Use the existing source application or review workflow to export separate common-ancestor, local and remote copies. Preserve the original files and choose the correct role for each. This workbench performs no repository or CLI invocation.
File selection shows metadata only; Run begins the entire 10-second period, including reading. Choose native files when original CRLF/CR/LF or missing terminal newlines matter; textarea edits may normalize them.
Recover and save
Confirm the common ancestor and selected roles. Reduce line work if over budget, then rerun. Keep unresolved output labeled as conflicted until every conflict has an explicit resolution.
Choose every conflict and keep unresolved output explicit
Choices are unresolved, local, base, remote, local then remote, remote then local, or custom text. An empty custom replacement is an explicit deletion. Apply decisions recomputes the complete output; only current active conflict IDs are valid.
Marker-looking input lines remain ordinary text. Generated LOCAL/BASE/REMOTE markers use LF; inserted separators for unterminated fragments are recorded in the complete report.
| State | Text file | Review |
|---|---|---|
| Unresolved conflicts | conflicted.txt | Keep markers and inspect each base/local/remote region |
| All decisions applied | merged.txt | Check the chosen text in the receiving application |
| Either completed state | merge-report.json | Retain source identities, conflict decisions and BOM policy |
- Check the common ancestor before deciding which side changed a region.
- Choose each conflict deliberately, including an empty custom replacement when deletion is intended.
- After a source change, review the new conflict IDs and enter decisions again.
- Save the full text and report, then manually review or import the text in the original workflow.
Empty sources and BOM are deliberate choices
Yes. Empty pasted text and a genuine zero-byte file are valid for any of the three roles. Three empty sources produce resolved empty text; this does not activate another hidden input.
One leading BOM is removed and recorded from each source. Choose base, local, remote or none; base is the default. A source policy adds a BOM only if that source had one. Complete text copy and download both follow the selected policy, preserve the same leading BOM and have identical UTF-8 bytes.
Use the current tool reference for byte, line-token, comparison, custom decision and combined-output limits; the preview does not replace the full artifacts.
Recover using the same sources
Confirm the common ancestor and selected roles. Reduce line work if over budget, then rerun. Keep unresolved output labeled as conflicted until every conflict has an explicit resolution. Empty sources are valid. After cancellation, rerun the same roles. After a source change, review new conflict IDs and re-enter decisions.
Changing a source clears report and decisions, even if a new merge later reuses a conflict ID. Cancelled or timed-out work does not publish a late result.
References
- Three original views and a fourth output pane request
The author wants mine/theirs/ancestor and merged output and mentions invocation trouble. This bounded workbench supports manually imported text versions; it does not fix or invoke Git integration.
Tools in this category
Expand a tool to see its steps, options and supported formats, then open its workspace.
Merge three versions of a text fileCombine local and remote edits against a common ancestor, inspect conflicts and save the complete chosen text.
Combine local and remote edits against a common ancestor, inspect conflicts and save the complete chosen text.
Steps
- Open or paste the common ancestor, local version and remote version in their separate panes.
- Click Run to read the active sources within the complete task deadline.
- Review the merged output and each conflicting base/local/remote region.
- Choose each resolution or edit custom text; changing any source clears stale decisions.
- Save merged.txt when resolved, or conflicted.txt while unresolved, plus merge-report.json.
- Manually import the reviewed saved result into your original editor or workflow; keep the originals and merge report.
Capabilities and limits
- Provide base, local and remote independently. Each strict UTF-8 source allows 1 MiB and 4,000 exact line tokens. Base lines × (local lines + remote lines) allows 4,000,000 comparison cells.
- Fixed node-diff3 3.2.1 Hunt–McIlroy line merge. CRLF, CR, LF and the missing terminal newline remain part of each line token. Open files to preserve original line endings; textarea editing may normalize endings.
- Identical changes appear once. Unresolved conflicts retain LOCAL/BASE/REMOTE markers and are labeled unresolved; complete resolution downloads merged.txt. Reports and result text together allow 8 MiB.
- Each conflict supports local, base, remote, local then remote, remote then local, or custom UTF-8 text up to 1 MiB. Compact resolution input allows 8 MiB before cloning; active choices also remain subject to the combined output limit. Unresolved is the default. Choose output BOM from base/local/remote or none; base is the default.
- Conflict markers use LF. A separator LF is inserted when needed after an unterminated fragment and recorded by UTF-16 offset. No syntax-aware merge or automatic repository changes.
- Each role uses either its pasted text or exactly one selected UTF-8 file. Empty text and genuine zero-byte files are valid merge sources; an invalid active file never falls back to hidden pasted text. Filename labels allow 512 UTF-8 bytes.
- One leading BOM is removed and recorded, including pasted input. Invalid UTF-8, unpaired Unicode surrogates are refused. Inputs stay in this browser.
- A fixed 10-second whole-task deadline or cancellation returns no partial export. Rerun after correcting the input; a fresh Worker starts each job.
- File selection reads metadata only. The entire fixed 10-second period begins at Run and includes engine loading, input checks, reading, import and merging. Any cancelled or refused request publishes no partial copy or download.
- Conflict IDs must refer to the current output; nonexistent or inactive IDs and custom text attached to another choice are refused. At most 12,000 IDs can arise from the three 4,000-line roles. Changing any source cancels active work and clears prior decisions and results.
- The fourth pane is a bounded output preview. Copy retains the entire merged text; merge-report.json retains all blocks, conflicts, provenance and decisions. The complete copy and download both preserve the chosen leading BOM and have identical UTF-8 bytes; exact bytes/SHA-256 are reported.
- This workbench accepts manually exported sources and produces a file for manual import. It does not invoke a Git CLI/mergetool, change a repository, validate code semantics or automatically mark a conflict resolved. Contents and names stay in bounded memory in this tab.