A hard reset moves the branch and replaces tracked index and working content with the selected snapshot. It can destroy unpublished edits, so use it only when the task explicitly authorizes discarding them. A mixed reset is not equivalent because it leaves the working data in place. These fixtures retain the original baseline in history and ask for its exact restoration. Read the target before acting and inspect both status and content afterward. A hard reset to the previous commit should restore its exact tracked tree, not merely clear a status label. A clean tree containing the newer route is still the wrong target for this discard request.