Resolve conflicts from your editor

The VS Code extension's conflict surface, and where JetBrains stands.

Written By Dustin

Last updated About 3 hours ago

VS Code

Conflicted paths get their own group in the source-control view, separate from your ordinary changes, each labelled with its kind and status. A protected path is marked as such. Conflicted files deliberately get no quick-diff gutter — there is no single "before" to diff against while three sides are live.

Two commands, both in the palette under TOVIO and on the right-click menu of a conflicted file:

CommandDoes
Resolve Conflict…Offers the strategies that apply to that conflict's kind, then runs the resolve.
Show Conflict Sides (Ours ↔ Theirs)Opens the sides for reading before you decide.

The picker is kind-aware

You are only offered strategies that make sense for the conflict in front of you: ours, theirs or base for a content, rename-edit or mode conflict; keep or delete for a delete-modify or modify-delete.

Two deliberate omissions worth knowing, because they are the cases where a menu that offered everything would hurt you:

  • Add-add leaves out "base". Two independently added files have no common ancestor, so taking the base would mean taking nothing — it would delete the file. It is not offered.
  • Rename-rename has no side to pick. The choice is a destination path, so the extension routes you to tovio resolve <path> --rename-to <new-path> rather than pretending it is a two-way decision.

JetBrains

A JetBrains plugin exists and builds, with the same two actions and a native three-way merge editor that maps the panes onto the three sides and saves your merged result back through the working-tree resolve.

Be aware of its status, though: it is not published to the JetBrains Marketplace, and the authoritative build status lists it as a remaining follow-on rather than a shipped product. The VS Code extension is the supported editor surface today, and it is not on a marketplace either — check the install instructions rather than searching for either by name.

The command line is always there

Both extensions shell out to the same commands. Nothing they do is unavailable to you directly, and anything they cannot express is one tovio resolve away.

tovio conflicts
tovio resolve <path>