Imo if you were as pedantic about the history you wouldn't be tampering with it.
If a commit is appended to a tree and nobody has checked it out yet, does it really exist?
I introduced the convention of preserving the previous version of the branch as "<branch-name>.1", and the previous-previous as "<branch-name>.2" similar to rotating logs.
You obviously don't want to be doing this on a repo with thousands of downstreams. The point is that "private" can have a somewhat larger scope than "just my single local repo".