Undo models can be categorized as linear or non-linear:
- Linear undo requires the user to revert the latest action before undoing earlier ones.
- With non-linear undo, the action to be reversed can be freely picked from the action history list. Non-linear undo can be further subcategorized into direct selective undo, script interpretation undo, and cascading undo.