Version control (VC) is a system that records changes to a file or set of files over time so that you can recall specific versions later.
Knowing this system and how to work with it is an essential skill for handling your projects (university projects, small private projects or massive projects with multiple people collaborating).
There are three main types of version control systems: local, centralized and distributed.
In local VC, the system maintains a history of file changes locally.
This is good for small local projects but it is risky and inefficient since if you lose control over your machine then you will lose the access to your code.
Centralized VC system allows multiple contributors to share a project repository in a remote host.
Each client can have a copy of the latest snapshot of the project files.
Merging changes from multiple clients is done automatically by the system.
The disadvantage of this system is the single point of failure.
In case any damage happened to the centralized system, users will not be able to restore the project history.
The final and most important type is the distributed VC system.
In this system, clients do not just check out the latest snapshot of the files: they fully mirror the repository. Thus if any server dies any of the client repositories can be copied back up to the server to restore it.
Every clone is really a full backup of all the data.
One of the most famous distributed VC system is Git.
It is an open source distributed version control system designed to handle projects with speed and efficiency.
I encourage you to have a look at the course in the following link for a quick start with git:
GIT official website: https://git-scm.com/