Why do Git undo commands differ depending on where a change currently exists?
All undo commands modify only a remote repository.
Undo behavior depends only on the filename extension.
The working tree, staging area, and commit history are distinct states, and each command targets particular states.
Git has only one state, so every undo command is interchangeable.