= Version-control snapshot
A <version-control snapshot> records the logical <state> of tracked <files> at a revision. In <Git (version control)>, tree objects describe directory entries and refer to content objects; a <version-control commit> identifies the root tree alongside history metadata. Unchanged content can be shared among many <version-control snapshots>.<Pro Git by Scott Chacon and Ben Straub>[§10.2, tree objects and commit objects]{ref}
If a repository contains `a.txt` and `b.txt`, changing only `a.txt` creates a new logical <version-control snapshot> containing the new `a.txt` and unchanged `b.txt`. It does not require a second physical copy of every byte. Two <version-control commits> can identify the same <version-control snapshot> but have different parents or messages. The recorded <files> and the ancestry explaining how they arose are therefore distinct information.
Back to article page