A Git repository contains the history of a collection of files starting from a certain directory.
The process of copying an existing Git repository via the Git tooling is called _cloning.
For example, you may use a VCS to track the different versions of a png file.
You can create a new branch from an existing one and change the code independently from other branches.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.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.