Merge & Conflict Resolution
Tigrister's Git panel resolves merge conflicts entirely in-app. There is never a moment where you have to drop to a terminal, open a text editor against files with <<<<<<< markers, and hand-edit them. Whenever a conflict shows up, the panel takes over with a guided resolver: a list of conflicted files, a 3-way merge view for each one, and a clear path to either accept the resolution or abort cleanly.
Where Conflicts Come From
There are three operations that can put the panel into a conflict state. All three hand off to the same resolver, with only the wording of the titles and abort buttons differing to remind you which operation you are in the middle of:
- •Branch merge: triggered from Merge into current in the branch context menu. If the merge produces conflicts, the resolver opens with the title "Merge conflict detected" and an Abort button.
- •Pull: triggered by the toolbar's Pull button. If integrating the remote commits produces conflicts, the resolver opens with the title "Pull merge conflict detected" and an Abort Pull Merge button.
- •Stash apply or pop: triggered from the Stashes section. If restoring the stash would overlap with your working tree, the resolver opens with the title "Stash conflict detected" and an Abort Stash Apply button.
In all three cases the resolver takes over the main area of the Git panel until every conflicted file is either resolved or the operation is aborted. You do not need to navigate anywhere — the panel pushes the right screen in front of you.
The Conflicted Files List
The first screen the resolver shows is a simple list of the files that need attention. It has three parts:
- •Title and counter: at the top, the resolver's title (for example "Merge conflict detected") and a single line saying how many files have conflicts.
- •File buttons: one large row per conflicted file, showing the file path. Unresolved files have a yellow indicator; files you have already resolved become dim with a green indicator and a small "Resolved" label on the right.
- •Abort button: below the list, a single abort button — Abort, Abort Pull Merge, or Abort Stash Apply depending on the source. It is only offered while at least one file is still unresolved.
Clicking a yellow file button opens its 3-way merge view (next card). Resolved files in green are not clickable — they are done. Once every file in the list has been resolved, the abort button disappears and a short message appears explaining what the panel is about to do: for a merge, "All conflicts resolved. Finalizing merge..."; for a pull, "All conflicts resolved. Completing merge..."; for a stash, "All conflicts resolved. Staging files...". The operation finalizes automatically — you do not need to click anything else.
The 3-Way Merge View
Opening a conflicted file shows a dedicated 3-way merge screen with four distinct areas. They are laid out top-to-bottom so nothing important is hidden at any screen size:
- •Header: a warning icon and a label reading either MERGE CONFLICT or STASH CONFLICT, followed by the file path. On the right: an Abort button that throws away any resolutions made so far and returns to the file list, and an Accept button that finalizes the file's resolution. Accept is disabled until every conflict block in the file has been resolved.
- •Two comparison panels (OURS and THEIRS): the main area is split in half. The left panel is labelled OURS (<current branch>) — your side of the conflict. The right panel is labelled THEIRS for a branch merge or pull, and THEIRS (stash) when the conflict came from a stash apply, so you always know whose changes you are looking at.
- •Result pane: a fixed strip at the bottom (up to 35% of the screen) labelled RESULT. It shows the final merged text the panel is about to keep, updated live as you pick sides. This is the single source of truth for what will actually be saved to the file.
- •Conflict navigator (footer): a one-line footer with "Conflicts: N remaining", a Prev button, a M / total counter, and a Next button. Use it to step through conflicts one at a time without scrolling.
Accepting One Side or the Other
Inside each of the two side panels, every individual conflict block is rendered as a small card. The card shows the block's content exactly as it appears on that side of the merge and, while unresolved, a single action button:
- •Accept Ours: on the OURS side. Picks this side's version of the block and writes it into the Result pane.
- •Accept Theirs: on the THEIRS side. Picks the other side's version of the block and writes it into the Result pane.
Once a block is resolved, the accepted side is highlighted with a small "Accepted" label and its border shifts to green. The rejected side is dimmed so you can tell at a glance which one you picked. You cannot change your mind for a single block inside the same visit — if you want a different outcome, click Abort in the header to start the file over from scratch.
When every block in the file is resolved, the "N remaining"counter in the footer reads zero and the Accept button at the top becomes available. Clicking Accept commits your resolution of this file to the underlying resolver and returns you to the file list, where the file's entry is now shown in green with the "Resolved" label.
Aborting a Conflict Resolution
At any point during the resolver flow — whether you are still in the file list or already inside a file's 3-way merge view — you can abort the operation and go back to a clean state. Aborting is always the safe option: it never destroys committed history, it just cancels the in-progress merge, pull, or stash apply.
- •Branch merge: Abort throws away the pending merge so the working tree returns to where it was before you picked Merge into current.
- •Pull: Abort Pull Merge throws away the pending pull merge. Your local branch stays where it was; the remote commits are simply not integrated. You can pull again later.
- •Stash apply: Abort Stash Apply throws away the pending stash application. The stash entry itself is left intact in the Stashes section so you can try again later — nothing is lost.
After any abort the panel closes the resolver, clears the pending conflicts, and returns you to whatever section you were on before the conflict appeared.