Resolving Git Merge Conflicts with TortoiseGitMerge on Windows
Step‑by‑step guide to using TortoiseGitMerge for clean merge conflict resolution on Windows, covering prerequisites, workflow, checks, and rollback options.
01 Sept 2026, 02:47 UTC

Desired Outcome
After the procedure you should have a clean merge commit: all conflict markers removed, the working tree marked as clean, and the feature branch successfully integrated into the target branch.
Prerequisites
- Windows machine with TortoiseGit ≥ 2.14 installed, including the
TortoiseGitMergecomponent. - Local clone of a Git repository where a merge conflict exists (e.g., after
git pullorgit merge). - Write permission to the working directory.
- Optional but recommended:
core.autocrlfset consistently across the team to avoid line‑ending conflicts.
Focused Procedure
- Initiate the merge that produced conflicts. Example:
The merge will stop with conflict markers andgit checkout main git pull origin main # merge a feature branch git merge feature-branchgit statuswill list unmerged paths. - Open the conflict list. Right‑click the repository folder in Explorer, choose
TortoiseGit → Resolve Conflicts. The dialog shows all files with unresolved conflicts. - Launch the merge tool. Double‑click a file in the list or right‑click →
Open with TortoiseGitMerge. The three‑pane view appears:- Left (Local) – your branch’s version.
- Right (Remote) – the incoming branch’s version.
- Bottom (Result) – the merged output you edit.
- Navigate conflicts. Use the toolbar arrows or
Alt+Left/Rightto jump to the next/previous conflict block. - Choose a resolution for each block. Options in the toolbar:
Use left– keep local changes.Use right– accept remote changes.Use text block from left then right– combine both.- Manually edit the bottom pane if neither side is correct.
Saveand thenMark as resolvedin the toolbar. The file’s status in the conflict list will change toResolved. - Repeat for all conflicted files.
- Commit the merge. Right‑click the repository folder →
TortoiseGit → Commit…. The commit dialog shows the merge commit with both parents. Add a message and clickCommit.
Expected Checks
- Run
git status– it should reportnothing to commit, working tree clean. - Verify no conflict markers remain:
git grep -n "<<<<<<<"should return nothing. - Inspect the merge commit:
git show --stat HEADshould list changed files and show two parent commits. - Build or run the project to confirm functionality.
Recovery Options
- Before committing. If you regret a resolution, right‑click the file →
TortoiseGit → Revert to… → Conflict versionto restore the original conflict markers and start over. - After committing. Use
TortoiseGit → Show Log, right‑click the merge commit, and chooseReset to parent… → SoftorRevert committo undo the merge. - Lost work. TortoiseGitMerge creates backup files with extensions
.origor.bakin the same directory. Inspect or restore them if needed.
Practical Engineering Decision
For teams that standardize on Windows, TortoiseGitMerge offers a tightly integrated experience: it appears automatically in the conflict list, respects core.autocrlf settings, and requires no external configuration. Cross‑platform teams can still use it by setting the merge tool in Git:
git config --global merge.tool tortoisegitmerge
git config --global mergetool.tortoisegitmerge.cmd "C:\\Program Files\\TortoiseGit\\bin\\TortoiseGitMerge.exe" -base %BASE% -local %LOCAL% -remote %REMOTE% -merged %MERGED%
This ensures that git mergetool launches TortoiseGitMerge on Windows hosts while other systems use their preferred tools.
Limitations & Caveats
- TortoiseGitMerge is Windows‑only; macOS and Linux users must rely on other merge tools.
- Large binary files show no meaningful diff; resolve by selecting the entire local or remote version.
- Inconsistent
core.autocrlfsettings can introduce spurious conflicts; coordinate line‑ending policies across the team. - When using Git LFS, TortoiseGitMerge may display pointer text; ensure LFS pointers are resolved before merging.
Practical Check After Merge
To double‑check that no conflict markers remain and that the merge is clean, run:
git diff HEAD^..HEAD --name-only
# Inspect each file in TortoiseGitMerge via right‑click → Show Changes
Delete any *.orig or *.bak files after confirming the merge is successful.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.