GitHub.com vs. GitLab Self-hosted
Set permissions according to people's role, rather than either read or write access to a repository. Don't share the source code with people that only need access to the issue tracker.
The most comprehensive import feature set
GitLab can import projects and issues from more sources (GitHub, BitBucket, Google Code, FogBugz, Gitea and from any git URL) than GitHub or any other VCS. We even have you covered for your move from SVN to Git with comprehensive guides and documentation.
GitLab allows you to export your project to other systems.
Create new branches from Issues
In GitLab, you can quickly create a new branch from an issue on the issue tracker. It will include the issue number and title automatically, making it easy to track which branch belongs to which issue.
Allow edits from upstream maintainers in branch
In GitHub, when a user opens a pull request from a fork, they are given the option that allows the upstream repository contributors to collaborate with them on their new branch. GitLab allows you to restrict pushes very carefully, but does not have this option.
Application performance monitoring
GitLab collects and displays performance metrics for deployed apps, leveraging Prometheus. Developers can quickly and easily determine the impact of any changes, without leaving GitLab. GitHub requires a 3rd party product, adding additional cost and separate workflows.
GitLab provides a dashboard that lets teams measure the time it takes to go from an idea to production. GitLab can provide this data because it has all the tools built-in: from the idea, to the CI, to code review, to deploy to production. GitHub can't provide this data.
GitLab provides a convenient way to change meta data of an issue or merge request withouth leaving the comment field with slash commands.
GitLab has Issue boards, each list of an issue board is based on a label that exists in your issue tracker. The Issue Board will therefore match the state of your issue tracker in a user-friendly way.
Drag and drop tasks
You can change the order of tasks in markdown on GitHub. GitLab does not have this ability, but is considering implementing it.
Built-in Docker Registry
GitLab Container Registry is a secure and private registry for Docker images. It allows for easy upload and download of images from GitLab CI. It is fully integrated with Git repository management.
Time Tracking in GitLab lets your team add estimates and record time spent on issues and merge requests.
With Review Apps you can spin up dynamic environments for your merge requests and preview your branch in a live environment.
New features every month
GitLab is updated with new features and improvements every month on the 22nd.
Keep your information secure with Confidential Issues. With GitLab, you can create confidential issues visible only for project members with Reporter access level or above.
More control during downtime
When GitHub is down, you have to wait for GitHub to make it available again. When your GitLab instance is down, everything is under your control.
You decide when you upgrade
GitLab releases a new version each month, and lets you choose when to upgrade. GitHub updates its product without you being able to do anything about it.
Since GitLab fans wrote most of the text here there is a pro-GitLab bias. Nonetheless we try hard to ensure the comparisons are fair and factual. Please also add things that are great in other products but missing in GitLab. If you find something that is invalid, biased, missing, or out of date in the comparisons, please open a merge request for this website to correct it. As with all the pages on this website you can find where this page lives in the repository via the link in the footer. All names and logos are recognized trademarks of their respective owners.