git reset is the direct route back to a stable state. It rewrites history. It moves the HEAD to a specific commit. It changes the index and, depending on the mode, the working directory too. With an MVP on a tight deadline, this is control you need.
Use git reset --soft <commit> when you want to keep changes staged. Your code stays in the index, ready for recommit, but past commits vanish from the branch history. This is useful when the MVP’s commit sequence needs a clean rewrite without discarding progress.
Use git reset --mixed <commit> when you want changes kept but unstaged. This is the default. The commit history rolls back, files stay in the working directory, ready for selective staging before the next push. It’s precise when part of the MVP implementation is right but the commit grouping is wrong.