Skip to Content

Conflicts

When a merge, rebase, cherry-pick or revert stops on a conflict, the workbench banner opens the conflict resolver. The resolver works on the files Git marks as unmerged and does not touch resolved files.

The block list

Each conflicted region is shown as one block, with the two sides and the common base:

ChoiceResult
OursThe current branch’s side of the block
TheirsThe incoming side
BothOurs followed by theirs
BaseThe common ancestor’s content, for when both sides are wrong

The whole block is replaced, so whitespace and line endings around the chosen lines are preserved. You can go block by block, and a bulk action applies one choice to every block in a file when the blocks are uniform.

The resolver refuses to stage a file while conflict markers remain. If Git still reports the file as unmerged but no markers are found, the resolver says so and asks which side to stage instead of guessing.

The whole-file editor

For a conflict that is not really block-shaped — moved code, renamed symbols, a merged function — the whole-file editor writes the final result directly. It is a plain text editor over the working-tree file; saving writes the file, and staging is still a separate step.

Three-way view

The three-way view shows base, ours and theirs side by side with a result pane. This is the fastest way to see which side introduced a change and which side is simply older. Navigation moves between changed regions; the result pane is editable.

Modify/delete conflicts

When one side modified a file and the other deleted it, the resolver offers the two meaningful outcomes: keep the modified content or accept the deletion. Keeping writes the file and stages it; deleting removes it and stages the removal.

Staging and finishing

  • Stage a file only when you are satisfied with its content.
  • The conflict list shows which files are still unresolved.
  • When all files are staged, continue the merge, rebase, cherry-pick or revert from the banner.
  • Aborting from the banner writes a recovery snapshot of the working tree before it resets anything.

Rerere

Git’s recorded-resolution cache (rerere) is available from the conflict panel:

  • Enable recording so that resolutions are captured for later reuse.
  • Reuse a recorded resolution when the same conflict appears again.
  • Forget a recorded resolution for a path when the stored answer is wrong.

Rerere is per repository and stores resolutions in .git/rr-cache, exactly as Git does.

AI suggestions

If an ACP agent is configured, the resolver can ask for a per-block suggestion:

  1. The scope disclosure lists the files and blocks that will be sent.
  2. The suggestion streams into an editable preview.
  3. Nothing is written until you press apply.

Suggestions are advisory text, not an automatic merge. Reviewing them is the same work as reviewing a human patch; the agent has no write access to the repository. See ACP agents.

Next

  • History — the rewrite that produced the conflict.
  • Recovery — restore the state before an aborted operation.
  • Changes — stage the resolved result.
Dernière mise à jour