Local branches can be compared with other local branches and with _remote-tracking branches.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.One of the branches is the default (typically named _master uniquely identifies a new revision of the content of the repository.This revision can be retrieved later, for example, if you want to see the source code of an older version.Or you may switch between versions of your files for experimental features.The process of creating different versions (snapshots) in the repository is depicted in the following graphic.which means that you can work on different versions of your collection of files.
The decision which of the copies is considered to be the central server repository is pure convention.
This way a branch defines its own line of descendants in the overall version graph formed by all commits in the repository.
You can create a new branch from an existing one and change the code independently from other branches.
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.