All about Git, Github and Gitlab
Published: 2022-03-18 07:06:45

Welcome once more to the newbies. Here is a new editor edition of **The VCS world** series. Today we won't talk about a story but in a few words, I'll introduce you to the world in which I live **#opensource**.
# Introduction
Before entering to know more about Git, Gitlab and Github let's get to know about their origins. The schedule for this journey seems bright, let's get started now.
## What is VCS?
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1647570791358/5xil8la_q.png)
In Full VCS stands for **V**ersion **C**ontrol **S**ystem. Version Control, also known as Revision Control or Source Code Management, is the management of changes to documents, images, computer programs, websites or other collections of information.
This management of changes actual includes tracking which is based on **Who made a change?** and **What was changed?** or **Which changes were made?** which makes teamwork ideal and perfectly ordered. The topic might seem boring but let's keep the focus.
## Why was the VCS made?
![thinking](https://66.media.tumblr.com/af66f731723146286b849e5e90dfcdcd/tumblr_ps0lm2hmD91wzypxlo1_1280.gif)
Software developers, designers, content writers and event students across the world needed a way of communication and working altogether and this problem was being solved by the invention of a VCS.
## Features of VCS.
![features](https://inspgr.id/app/uploads/2017/09/illustration-magoz-feature.gif)
VSC has some features that will gradually seduce you the more you work with.

1. **Increase in production speed**:<br>
The outcome of proper communication has always been an optimal output. With this improvement brought by VCS  to the `<dev/>` world, the enhancement of projects output speed is common. Isn't that beautiful? 🥺

2. **Reduce possibilities of errors and conflicts**: <br>The fact VCS is bringing track, each small change to a software or computer program can be identified and tracked. So code recovery is available in VCS.

3. **Changes have owners**:<br> VCS is made in such a way that each person's changes to the program in the team is identified and has a unique identifier so no confusion among members.

4. **Helps in recovery in case of any disaster or contingent situation**:<br> Each change has an identifier same as each step in the development cycle of the software is tracked so a rollback is possible.

5. **Remote work made possible**:<br> Recent VCS are off-site base so remote work is made possible. You can apply for a Software engineering job across the globe without stress or a token spent.

## Types of VCS
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1647573012091/W-R6B2q7t.png)
Existing VCS types are three(3) in numbers. They include the following:<br>
1. Local Version Control System
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1647573218074/22vk73KSt.png)
Here the implementation is pretty nice. The files are stored on your computer(local machine) where each file change is uniquely identified as a patch and the concerned patch is only for that single change made to the file since its last version. To see what the file looked like at any given moment, it is necessary to add up all the relevant patches to the file in order until that given moment.
Here now comes an issue which in backup i.e. in case the files are lost or corrupted, that all about them since it was locally stored.

2. Centralized Version Control System
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1647573389297/iRzj3Bn8U.png)
This is far more an improvement over the latter. In the centralized version control system, a server is included and several(as from two) computers too. In works such that a local copy from a user can be uploaded to the server and other developers can pull it from there and any change can be pushed back to the server.
The biggest issue here now is that only a single server is used, disruption or corruption of the server stops everyone's work and all the data will be unavailable for all the users who didn't yet fork.

3. Distributed Version Control System
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1647574096866/ERl0hR9kS.png)
With distributed version control systems, clients don’t just check out the latest snapshot of the files from the server, they fully mirror the repository, including its full history. Thus, everyone collaborating on a project owns a local copy of the whole project, i.e. owns their own local database with their own complete history. With this model, if the server becomes unavailable or dies, any of the client repositories can send a copy of the project's version to any other client or back onto the server when it becomes available. It is enough that one client contains a correct copy which can then easily be further distributed.

## Examples of VCS
![vcs.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1647584209979/MHr8NHlHx.png)
Many different VCS exists now our days. The most common examples are listed below.
1. Github
![github](https://camo.githubusercontent.com/58151d96855b52518ad312c714ff3713fff228c0/68747470733a2f2f6f63746f6465782e6769746875622e636f6d2f696d616765732f68756c615f6c6f6f705f6f63746f64657830332e676966)
With over 73 million users worldwide, Github is the most popular online VCS used.
GitHub is an online service to which developers who use Git can connect and upload or download resources. GitHub helps software teams to collaborate and maintain the entire history of code changes. You can track changes in code, turn back the clock to undo errors and share your efforts with other team members.
2. Git
![git](https://aws1.discourse-cdn.com/github/original/3X/3/f/3f3146405a41d6f9f5dc77ec8662f42cfb43382e.gif)
The most used local VCS, with over 200mllions users, Git is the most used local VCS and all GitHub users are attributed too to Git. Git can do with Github but Github can't do without Git. 
3. Gitlab
![gitlab](https://www.d-logic.com/code/help/user/discussions/img/start_image_discussion.gif)
GitLab comes with a lot of handy features like an integrated project, a project website, etc. Using the continuous integration (CI) capabilities of GitLab, you can automatically test and deliver the code.
4. Beanstalk
![beanstalk](https://lparchive.org/Kings-Quest-I/Update%2005/7-05-006.gif)
Beanstalk is an ideal option for those who need to work from remote places. This software is based on browser and cloud, allowing users to code, commit, review and deploy using a browser.
It can be integrated with messaging and email platforms for efficient collaborations related to codes and updates. It supports both Git and SVN and comes with built-in analytics features.
5. Bitbucket
![bitbucket](https://www.logo.wine/a/logo/Bitbucket/Bitbucket-Blue-Logo.wine.svg)
Bitbucket is a part of the Atlassian software suite, so it can be integrated with other Atlassian services including HipChat, Jira, and Bamboo. The main features of Bitbucket are code branches, in-line commenting and discussions, and pull requests.
It can be deployed on a local server, data centre of the company, as well as on the cloud. Bitbucket allows you to connect with up to five users for free. 

## Conclusion
Opensource is so great, always getting vibes and feeling the move contributing. Choose a VCS that best fits you and make it your companion.