{"record":{"id":"6c76c1780b4454a6","repo":"gitbutlerapp/gitbutler","slug":"no-conflicted-commits-found","errorCode":null,"errorMessage":"No conflicted commits found.","messagePattern":"No conflicted commits found\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/but/src/command/legacy/resolve.rs","lineNumber":887,"sourceCode":") -> Result<()> {\n    use but_api::resolve::{HunkResolution, ResolutionSpec};\n\n    let ResolutionFlags {\n        ours,\n        theirs,\n        ai,\n        file,\n    } = flags;\n\n    let t = theme::get();\n    let mode = operating_mode(ctx)?.operating_mode;\n    if matches!(mode, OperatingMode::Edit(_)) {\n        bail!(\n            \"You are in conflict resolution mode. Finish with `but resolve finish` or cancel with `but resolve cancel` first.\"\n        );\n    }\n    let Some(conflict_target) = target_conflicted_commit(ctx, commit)? else {\n        bail!(\"No conflicted commits found.\");\n    };\n    let commit_oid = conflict_target.commit_oid;\n\n    // Split a trailing `:<number>` off the target; everything else is the path.\n    let (path, hunk) = match target.rsplit_once(':') {\n        Some((path, number))\n            if !number.is_empty() && number.bytes().all(|b| b.is_ascii_digit()) =>\n        {\n            (path, Some(number.parse::<usize>()?))\n        }\n        _ => (target, None),\n    };\n\n    let resolution = if ours {\n        HunkResolution::Ours\n    } else if theirs {\n        HunkResolution::Theirs\n    } else if ai {","sourceCodeStart":869,"sourceCodeEnd":905,"githubUrl":"https://github.com/gitbutlerapp/gitbutler/blob/58e5313667b857ef39a730e380af31816a7b1768/crates/but/src/command/legacy/resolve.rs#L869-L905","documentation":"Thrown by apply_resolutions when target_conflicted_commit returns None, meaning there are no conflicted commits anywhere in the workspace (and none matching the given target). There is nothing to apply resolutions to.","triggerScenarios":"`but resolve` when the repository has no pending conflicts, or `but resolve <target>` where the target has no conflicts so target_conflicted_commit finds nothing.","commonSituations":"Re-running a resolve command after conflicts were already resolved and finished; or invoking resolve in a clean workspace by mistake.","solutions":["Verify conflicts exist with `but status` / `but resolve` (list mode).","If already resolved, run `but resolve finish` instead.","Skip the command — nothing needs resolving."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"const conflicts = listConflicts();\nif (conflicts.length === 0) { console.log('Nothing to resolve'); return; }","typeGuard":null,"tryCatchPattern":"try { await butResolve(...) } catch (e) { if (String(e).includes('No conflicted commits found')) { /* clean exit — nothing pending */ } }","preventionTips":["Check for conflicts before invoking resolve.","Treat this as an expected no-op in scripts.","Re-check state after `but resolve finish`."],"tags":["cli","git","conflict-resolution","empty"],"backgroundTag":"empty-result-set","analyzedSha":"58e5313667b857ef39a730e380af31816a7b1768","analyzedAt":"2026-09-18T06:50:32.052Z","contentChangedAt":"2026-09-18T06:50:32.052Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}