Version Control or Source Control (known as VCS) helps you track and manage the software code. As teams get bigger and bigger, development happens faster and faster and so we need a reliable way to track the changes and maintain different versions of our software, that’s where Git and Version control come into the picture.
1) History of Changes:
Complete long-term change history of every file is saved in git. This means every change made by many individuals over the years. Changes include the creation and deletion of files as well as edits to their contents. Different VCS tools differ in how well they handle the renaming and moving of files. This history should also include the author, date, and written notes on the purpose of each change (commit messages). So, reverting to older code at any given time would be possible.
2) Branching & Merging:
different people working on different parts of the software is very common, which leads us to the problem of not being able to merge it together leading to unimaginable complexities. For example, let's take Git is not available, and so we would have to make a zip file and send it to all our teammates for any code changes we make, imagine how hard it would be to download and merge those files with theirs. But with git and its features, it is easy to branch different features and merge them when needed.
All the changes being saved along with the purpose of change messages helps in bug analysis and other forensics. we can also deploy famous bug-tracking software like JIRA etc.
A centralized VCS has a remote central instance and if that is lost, it can cause data loss and can cause productivity issues.
A distributed model architecture avoids these pitfalls by keeping a full copy of the source code at each VCS instance.
Git and mercurial are DVCS
The difference between a repository hosting services and a version control system:
they are two separate entities. VCS is a low-level command-line-based interface that helps track the changes in your file
Repository hosting services are third-party web applications that wrap and enhance a version control system. And that is where CI/CD pipeline integration etc. can be implemented.
Thank you for your time!! Happy Coding❤️