If you use emacs, you should keep an eye on Jon Snader's blog, irreal.org. A few days he posted on Undo Tree - a package that extends Emacs's built in undo functionality.

Basic emacs has undo, bound to C-/ or C-_ but that's about it. Undo tree, which you can set up with:

(use-package undo-tree :ensure t :init (global-undo-tree-mode))

adds two key features. First is redo, which you get by adding the shift key to the undo keychords.

The other, is the visual undo tree. You can bring that up wit C-x u

Once you bring up the undo tree, you can use the up and down arrows or C-n and C-p to move between undo and redos. When you get to what you want, just quit the undo tree visualizer with q.

The cool part is that once you undo a few things and add new stuff, you get a tree that you can navigate through using the arrows.

It's much easier to get the flavor of this by watching the video (which also has a lame example of using artist-mode which I'll come back t at some point).

Enjoy.

Relevant links: