Skip to content

[BUG] Conflict resolution is always selecting OURS and for binary files and not prompting for selection #2566

Description

@mjfs

When a conflict resolution is needed SourceGit (v2026.15) does as expected for text files - it gives the user an option to select the version of a file. This is however not the case for binary files, where OURS is the version automatically selected - e.g. one can just stage the changes and commit them. A minimal example for both text and binary conflicts is attached bellow (after running the examples open local-repo).

A BINARY CONFLICT EXAMPLE

New-Item -ItemType Directory binary-conflict-example
git init --bare --initial-branch=main binary-conflict-example/remote-repo.git
git init --initial-branch=main binary-conflict-example/local-repo

Set-Location binary-conflict-example/local-repo
git config user.name "Binary Conflict Demo"
git config user.email "demo@example.invalid"
git remote add origin ../remote-repo.git

[IO.File]::WriteAllBytes("$PWD/artifact.bin", [byte[]](0, 1, 2, 3))
git add artifact.bin
git commit -m "base: add binary artifact"
git push -u origin main

git switch -c remote-change
[IO.File]::WriteAllBytes("$PWD/artifact.bin", [byte[]](0, 10, 20, 30))
git commit -am "remote: change binary artifact"
git push origin HEAD:main

git switch main
[IO.File]::WriteAllBytes("$PWD/artifact.bin", [byte[]](0, 40, 50, 60))
git commit -am "local: change binary artifact"

git merge origin/main
git status --short --branch

A TEXT CONFLICT EXAMPLE

New-Item -ItemType Directory text-conflict-example
git init --bare --initial-branch=main text-conflict-example/remote-repo.git
git init --initial-branch=main text-conflict-example/local-repo

Set-Location text-conflict-example/local-repo
git config user.name "Text Conflict Demo"
git config user.email "demo@example.invalid"
git remote add origin ../remote-repo.git

Set-Content artifact.txt "base version"
git add artifact.txt
git commit -m "base: add text artifact"
git push -u origin main

git switch -c remote-change
Set-Content artifact.txt "remote version"
git commit -am "remote: change text artifact"
git push origin HEAD:main

git switch main
Set-Content artifact.txt "local version"
git commit -am "local: change text artifact"

git merge origin/main
git status --short --branch

Update: formatting fix for consistency

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions