These text files can for example be source code for a programming language, HTML or configuration files.
Of course, version control systems are not limited to text files, they can also handle other types of files.
In a distributed version control system each user has a complete local copy of a repository on his individual computer. This copying process is typically called Every repository can exchange versions of the files with other repositories by transporting these changes.
This is typically done via a repository running on a server which is, unlike the local machine of a developer, always online.
Each version captures a snapshot of the files at a certain point in time and the VCS allows you to switch between these versions.
These versions are stored in a specific place, typically called a You may, for example, revert the collection of files to a state from 2 days ago.
A remote-tracking branch proxies the state of a branch in another remote repository. If you are working in a certain branch, the creation of a new commit advances this pointer to the newly created commit. Successors are retrieved by traversing the commit graph starting from branches or other refs, symbolic references (for example: HEAD) or explicit commit objects.
Typically, there is a central server for keeping a repository but each cloned repository is a full copy of this repository.
The decision which of the copies is considered to be the central server repository is pure convention.
For example, you may use a VCS to track the different versions of a png file.
A centralized version control system provides a server software component which stores and manages the different versions of the files.