Problem: if each checkpoint is represented as a separate branch forked sequentially, e.g.:
master -> 01-first-checkpoint -> 02-second-checkpoint -> 03-third-checkpoint
and you need to make changes in master (add more commits), it's rather cumbersome to rebase each one of checkpoint branches. We need a convenient way of dealing with checkpoints.