I might be mistaken, but my impression is that you don’t ever really change history with git commands. Even with commands like git commit —amend, you’re just making a new commit whose parent is the parent of the commit you were previously on—if you want to switch back to where you were before amend, you can still do that. With reset you’re tracing your steps back in the DAG, and with revert you make a new commit. You’re not really rewriting history—more precisely you’re just moving to a different portion on the DAG of history.
I might be mistaken, but my impression is that you don’t ever really change history with git commands. Even with commands like git commit —amend, you’re just making a new commit whose parent is the parent of the commit you were previously on—if you want to switch back to where you were before amend, you can still do that. With reset you’re tracing your steps back in the DAG, and with revert you make a new commit. You’re not really rewriting history—more precisely you’re just moving to a different portion on the DAG of history.