Git is a version control system designed to handle various projects with speed and efficiency. It is the most popular decentralized version control system.

Version Control System

A Version Control System (VCS) is a tool that records all changes to a project's source code. It records all the actions performed by any user along with the specific time. It maintains several version of the source code in parallel and allows those codes to be retrieved at any moment.

A Version Control System (VCS) has 2 parts: the server-side manages the repository, and the client-side is controlled by the user to retrieve the source code from the repository.

Some of the common terms in VCS are:

Repository

It is a system which holds the source code and all changes to the source code.

Branch

It represents the version of the source code.

Revision

It refers to the source code after any discrete changes applied to it.

Head

It is the latest revision in a branch. It represents the latest state of the code for the specific branch.

Checkout

It represents an action to obtain a branch from a repository.

Commit

It refers to an action of uploading changes made locally to the repository.

All codes in modern projects are version-controlled which is stored in a repository. Duplicate copies of these codes are then modified by the user, and are expected to put back into the repository.

A Version Control System can be classified as centralized and decentralized VCS.

Centralized VCS

Centralized Version Control System refers to a central remote repository. Subversion is a very popular centralized VCS. 

De-centralized VCS

De-centralized Version Control System refers to the local repository which is a directory on each developer's computer system. Git is the most popular de-centralized VCS.

 As a decentralized VCS, every local copy is a clone of the complete repository. There could be as many clones as one wants, with clones stored on multiple servers for backup purposes. Local repositories can be cloned just like remote ones. A local repository could very well be the remote repository of another developer, if the system allows the remote access.

Some common terms of de-centralized VCS are:

clone

It creates a local replica of a remote repository.

fetch

It updates a local repository from a remote repository. After this operation, the local repository contains all the information in the remote one.

pull

It updates a local branch from a remote branch. By pulling the remote branch, the local branch gets updated with all the changes made to the remote one.

push

It updates a remote branch after making changes in a local branch.

Git is a tool used in github as well as gitlab.

Github

Github is a web based repository hosting service. It is used to host some products that are released as an open source.

Gitlab

Gitlab is a self-hosted git management tool. It is designed to look and work like github.