Emacs has an optional undo-tree. You can cursor to each node, and hit return to go back in time, even along branches.
Is there something similar for git, which can be accessed within the Terminal (not Emacs). So, within a git project, I could type a command and it would show the tree. I could cursor around, going back in time or even switching to another branch, then hit return and it would checkout that particular commit's whole state.