>it's not "rewriting history" because you've always got reflog and cryptographically secure version hashes
To avoid having to go to the reflog, you can follow this simple procedure: branch before rebase. Then when you're comfortable, just change the branch to point at the new ref. This is the rename(2) approach to rebasing :D