If you are not worked on “clearcase” then you are really a fortunate soul. “ClearCase” is one of the complex repository management software and I always used to face issues due to rebase and other operations to commit code and the errors not able to resolve and some times I used to lose all the local changes as I cannot commit changes locally in ClearCase, unlike git.
When I switched to use Git as repository management software life becomes predictable and easy. It is mainly due to the architectural difference between ClearCase and Git.
ClearCase is centralized while Git is distributed repository management software.
Centralized means all the code(branches, history e.t.c) are in one server and if A need to make changes, then A will download the code from centralized server, make changes and commit it back to server(we cannot commit changes locally, and this is major issue as if you experience any issues while committing code to centralized server, then all your changes will be lost and this happened to me multiple times while using clearcase).Even though SVN and CVS are both centralized version control systems, atleast they are not buggy as clearcase. So not all centralized architecture version control are bad, but they miss some of the main functionalities and ease of development provided by distributed systems.
Distributed means if A needs to make changes to a version of code(like master or branch) he will get whole code history or version of the code and all of its branches in their local server or machine.Then when you are done with changes, you commit locally and then perform additional step “push” that will transfer local repository code to the master repository.
So now we know what is git, let's dive in to see how git lab, github and bitbucket(stash) are different from it.
If git is a email then gitlab/github/bitbucket(stash) is like gmail/yahoo mail.
Gitlab/Github/BitBucket(Stash) → All these offerings provide cloud or on- premise services for hosting of git repositories. In addition to hosting code, helps manage software development projects with features like issue tracking, integrated CI/CD, application performance and server monitoring, static and dynamic security testing and container scanning, hosting web pages, LDAP , authentication and authorization, integration with JIRA, confluence, jenkins e.t.c
- Gitlab /Github and BitBucket(Stash) almost contain same functionalities except that GitLab Community Edition is free and open sourced where as GitHub/BitBucket is not. So if you are into open-source products gitlab is for you.
- BitBucket adoption and usage compared to gitlab/github is relatively low, and it isslowly catching up with organizations that use other atlassian products like jira, confluence for better integration, and also bundled Atlassian products pricing is cheap compared to gitlab or github.