Git cannot-rebase-unstaged-changes Git declined to start a rebase while the working tree holds unstaged modifications.
Reviewed for reference consistency: August 11, 2026
Code is Safe
SECUREGit has paused the operation to protect your code. No data has been lost or corrupted.
What To Know
Where Did It Fail?
Commands That Trigger This
Technical Background
The check is a precondition, not a failure mid-operation. Git compares the working tree and the index against HEAD and refuses before the rebase machinery exists — no rebase directory is created, no commits are lifted, and the branch stays on its original base.
Interference is the reason behind the strictness. A rebase applies commit after commit to the checkout; an unstaged edit sitting in the same files would mix unrecorded work into a rewritten commit, and separating the two afterwards is far harder than choosing a home for the edits now.
The wording differs slightly from the pull variant ('cannot rebase' rather than 'cannot pull with rebase') because here rebase was named directly, not selected through pull configuration. Both paths share one cleanliness requirement.
Underlying Causes
Frequently Asked Questions
No. The rebase never began, so the edits remain in the files untouched; only the rebase itself was refused.
Partially staged work counts as uncommitted too; a rebase starting from an index that disagrees with HEAD could not tell staged intent apart from the history it is rewriting.
Related Git States
Git paused the merge because it cannot automatically resolve overlapping changes.
Git stopped a rebase or cherry-pick because the commit conflicts with your current code.
You tried to run a Git command while a previous rebase operation is still paused.
Git refused a pull configured for rebase because tracked files carry uncommitted edits.