⬡Conflict resolution
When a merge, rebase, cherry-pick or revert pauses on a conflict, the sidebar swaps its commit flow for a guidance banner — the operation name, the unmerged files, and a quick action per file.
Guidance banner conflicts
Entry points
- AutomaticAppears in the sidebar (
ConflictBanner) the moment an operation pauses — no action needed.
What it shows
- A title — "⚠ Resolving a <operation>" (merge / rebase / cherry-pick / revert).
- A live count: "N files left — pick a side or open the merge editor", switching to "all resolved — click Continue" at zero.
- Go reports the paused state via conflicts and the unmerged file list.
Per-file actions
Each unmerged file gets three buttons:
| Button | Command | Effect |
|---|---|---|
| merge | opens merge editor | Opens VS Code's 3-way merge editor for the file. |
| current | conflict.keepCurrent | Keeps --ours (HEAD side). |
| incoming | conflict.keepIncoming | Keeps --theirs (the incoming side). |
iCurrent / Incoming are correct for both merge and rebase — HEAD is always "current", so the labels never invert the way raw
--ours/--theirs can during a rebase.Continue / Abort
- BannerContinue — gated until every file is resolved (conflict.continue).
- BannerAbort — rolls the operation back (conflict.abort).
- Continue routes per operation: rebase →
rebase --continue; merge / cherry-pick / revert → commit. - Abort routes per operation: rebase →
rebase --abort; others →--abort.
iFor an in-progress rebase specifically, the toolbar also offers Skip (rebase.skip); the paused state survives reloads via rebase.status.
rerere — reuse recorded resolutions rerere.enable
reuse recorded resolution: git remembers how you resolved each conflict and silently replays it when the identical conflict reappears — the second rebase of the same branch just works. Almost nobody knows this exists; HydraGit turns it on for you.
What happens next
- On activation (and on every repo change) the extension sends rerere.enable for each repo: sets
rerere.enabled+rerere.autoupdatein the repo-local config — never the global one. - From then on git records resolutions transparently; on a repeat conflict the file arrives already resolved and (via autoupdate) already staged.
iControlled by
hydragit.rerere.enabled (default on). Turning the setting off stops enabling it for new repos; already-written repo config stays until changed.