A snapshot includes the contents of the virtual machine memory, virtual machine settings, and the state of all the virtual disks. When you revert to a snapshot, you return the memory, settings, and virtual disks of the virtual machine to the state they were in when you took the snapshot.
You might want to take snapshots in a linear process if you plan to make changes in a virtual machine. For example, you can take a snapshot, continue to use the virtual machine from that point, take another snapshot at a later point, and so on. You can revert to the snapshot of a previous known working state of the project if the changes do not work as expected.
For local virtual machines, you can take more than 100 snapshots for each linear process. For shared and remote virtual machines, you can take a maximum of 31 snapshots for each linear process.
If you are testing software, you might want to save multiple snapshots as branches from a single baseline in a process tree. For example, you can take a snapshot before installing different versions of an application to make sure that each installation begins from an identical baseline.
Multiple snapshots have a parent-child relationship. The parent snapshot of a virtual machine is the snapshot on which the current state is based. After you take a snapshot, that stored state is the parent snapshot of the virtual machine. If you revert to an earlier snapshot, the earlier snapshot becomes the parent snapshot of the virtual machine.
In a linear process, each snapshot has one parent and one child, except for the last snapshot, which has no children. In a process tree, each snapshot has one parent, one snapshot can have more than one child, and many snapshots have no children.