A mixed reset moves the branch reference and resets the index to that snapshot, while retaining working files. It is useful when you want to rebuild an unpublished commit from unstaged edits. A soft reset leaves them staged, and a hard reset discards them. Those differences matter more than the commands' similar names. Inspect status and the file together after resetting so you can tell an unstaged retained change from a lost one. After a mixed reset, the new route should appear in the plain diff while the cached diff is empty. That is a useful diagnostic pair when a status message alone leaves you unsure which state changed.