GitHub vs. GitLab: comparison of the two version control systems
GitHub and GitLab are version control systems that are used to manage source code during software development. With them, when working as a team, developers can simultaneously edit source code, make changes, and — last but not least — keep an overview of all changes made. Each modification can be followed with exactitude and possibly canceled.
As the name suggests, GitLab and GitHub are both based on the same versioning software: Git. This revolves around repositories in which users can load source code and edit it simultaneously in a browser, code editors or a terminal.
First of all, what is Git ?
Developing software projects together is not an activity specific to companies: in the open source sector, several hundred or even, for certain projects, several thousand volunteers contribute to maintenance, optimization, continuous development or when modifying a software. Without a suitable system that allows different developers to save and control the many changes, projects of this type would be difficult to implement.
One of the most popular solutions for version management is the open source software Git, which is easy to learn and completely free.
Git is a shared version control system that was developed in 2005 by Linux creator Linus Thorvalds and released under the GNU-GPLv2 free license. Although each project has a central directory, the unique feature of this tool is that all participating users download a local working copy of this directory to their device. Each of these copies constitutes a full-fledged backup of the directory, which means that a permanent connection to the network is not necessary for the underlying work process. In addition, the copies serve as a backup in case the main directory crashes or is damaged. The changes made can be shared at any time with all other network participants and be included in the directory if they are relevant.
Comparison of major differences
Licenses and installation on a private server
Both GitLab and GitHub have a free version and an Enterprise version for businesses, which comes in several subscription models with different features. In the main, both platforms can be installed on a private server.For GitHub, however, this option is limited to the paid Enterprise version, while GitLab allows private hosting even with the free Community edition. Overall, server stability is a bit poorer in the hosted variant of GitLab compared to GitHub, which is why installing on a private server may make sense.
No continuous integration tool provided by GitHub
Due to the wide reach of GitHub, this service is compatible with a multitude of software designed to facilitate collaborative work, for example, we quote Docker, CI / CD tools or project management applications.
But in the area of continuous integration, where it is also needed, GitHub does not provide continuous integration tools. In this regard, GitLab’s tool, which includes free continuous integration by default, is ahead of the game.
More user rights in the free version of GitLab
For a long time, a big advantage of GitLab has been the unlimited number of free repositories that can be created. GitHub has followed suit and now offers the same. However, the free version of GitHub still has more restrictions.
Thus, “protected branches” (access to which is restricted to certain users) are available in both GitLab and GitHub, but in the latter they are limited to public repositories, while in GitLab the function also exists for private repositories.
Even more annoying: the number of developers per private repository in GitHub is capped at three. Suffice to say that those who want to collaborate in a larger team will be obliged to take out a subscription to use the Enterprise version.
Overall, GitHub offers a bit more user rights. Role-based rights management is only available in the subscription version in GitHub, while it is included as standard in GitLab. Finally, GitLab offers a container registry where users can drop Docker images created with CI tools and manage them as a component of the GitLab repository.