GitLab compared to other tools

vs.

GitHub Enterprise vs. GitLab Premium

GitHub is a collaborative code repository to host and review code, manage projects and build software. CI/CD is accomplished via integrations with other products, while GitLab has integrated CI/CD. GitLab also offers application performance and server monitoring along with cycle analytics. GitHub security capabilities include use of SSL, SSH and/or https for all data transmission, and two-factor authentication for login. GitLab includes these same features and also static and dynamic security testing and container scanning. GitHub pricing is free for public repos and for students but does not offer free private repos. GitHub currently scales for larger projects.


FEATURES

Innersourcing

Internal projects in GitLab allow you to promote innersourcing of your internal repositories.

Find out more about innersourcing

Group Milestones

Create and manage milestones across projects, to work towards a target date from the group level. View all the issues for the milestone you’re currently working on across multiple projects.

Learn more about Group Milestones

Burndown Charts

GitLab provides Burndown Charts as part of Milestones. This allows users to better track progress during a sprint or while working on a new version of their software.

Read our Burndown Chart Documentation

Issue Weights

GitLab lets you manage issues using Agile practices by setting the weight of an issue.

Read our Issue Weights documentation

Related issues

Explicitly mark issues as related and track their status.

Learn more about Related Issues

Multiple assignees for issues

Assign more than one person to an issue at a time.

Read our Multiple Assignees Documentation

Wiki based project documentation

A separate system for documentation called Wiki, is built right into each GitLab project. Every Wiki is a separate Git repository.

Learn more about GitLab Wikis

Cycle Analytics

GitLab provides a dashboard that lets teams measure the time it takes to go from planning to monitoring. 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.

Learn more about Cycle Analytics

Quick actions

GitLab provides a convenient way to change metadata of an issue or merge request without leaving the comment field with slash commands.

Documentation about quick actions

Image Discussions

Within a commit view or a merge request diff view, and with respect to a specific location of an image, you can have a resolvable discussion. Have multiple discussions specifying different areas of an image.

Image Discussions

Lock Discussion

Lock down continued discussion in an issue or merge request as a Master role or higher, to prevent further abuse, spam, or unproductive collaboration.

Lock Discussion

New features every month

GitLab is updated with new features and improvements every month on the 22nd.

One integrated tool

Other tools require the integration of multiple 3rd party tools to complete the software development lifecycle. GitLab has a completely integrated solution that covers the entire development lifecycle.

Access to the server

You have complete control of the server/instance, so you can install additional software (intrusion detection, performance monitoring, etc.) and view log files on the server itself. GitLab’s advanced log system means everything gets logged and provides you with easy access to a wealth of log file information.

Learn more about logging

Runs on metal

GitLab can run on bare metal servers where you can have control of the disk I/O, CPU, RAM, etc. Scale horizontally without an issue.

Read about the different ways to install GitLab

Highly Available setups

For mission critical releases, you cannot afford downtime. Split your app servers, database, etc., into multiple instances and work in read-only mode during backups.

More information on High Availability

Run your own software on your instance

You are free to run your own software on the instance that GitLab is running on. Have your own intrusion detection system? No problem.

Read about the different ways to install GitLab

Use your configuration management software

You can use your choice of configuration management software, from Puppet, Chef, Ansible for quick and straightforward implementation.

Read about the different ways to install GitLab

Use standard Unix tools for maintenance and monitoring

Use the tools you know for monitoring and maintenance, whether they’re standard or your own. GitLab doesn’t restrict you.

Read about the different ways to install GitLab

Single package installation

Use GitLab’s official repositories or manually download the package to install GitLab in a few steps. All major Linux distributions are supported.

Read about the different ways to install GitLab

IPv6 ready

Both GitLab.com and GitLab Self-manages support IPv6.

Read the docs on configuring IPv6

AD / LDAP integration

Sync groups, manage SSH-keys, manage permissions, authentication and more. You can manage an entire GitLab instance through the LDAP / AD integration.

More information about AD / LDAP integration

Multiple LDAP / AD server support

Link multiple LDAP servers to GitLab for authentication and authorization

Advanced LDAP configuration

Multiple approvals in code review

In GitLab, to ensure strict code review, you can require a specific number of approvals on a merge request by different users before being able to merge it. You can undo an approval by removing it after the fact.

Approvals Documentation

Ease of migration from other providers

GitLab lets you easily migrate all repos, issues and merge request data from your previous provider.

Learn how to migrate your projects to GitLab

Confidential Issues

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.

Learn more about Confidential Issues

Access to and ability to modify source code

GitLab Enterprise Edition is publicly readable, meaning you can scan or modify the code to meet your security and development needs. The code used by most other providers is proprietary, meaning you cannot edit or view the source code.

Read the GitLab Enterprise Edition license.

A comprehensive API

GitLab provides APIs for most features, allowing developers to create deeper integrations with the product.

Read our API Documentation

Search files with fuzzy file finder

GitLab provides a way to search a file in your repository in one keystroke.

Read about the file finder in our documentation

Squash and merge

Combine commits into one so that main branch has a simpler to follow and revert history.

Learn more about squash and merge

Remote repository push mirroring

Mirror a repository from your local server to elsewhere.

Learn more about repository push mirroring

Remote repository pull mirroring

Mirror a repository from a remote Git server to your local server, making it easy to keep local forks and replicas up to date.

Learn more about repository pull mirroring

Export issues as CSV

Issues can be exported as CSV from GitLab and are sent to your default notification email as an attachment.

Learn more about exporting issues as CSV

Granular user roles and flexible permissions

Manage access and permissions with five different user roles and settings for external users. 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.

Learn more about User Roles

Merge when pipeline succeeds

When reviewing a merge request that looks ready to merge but still has one or more CI/CD jobs running, you can set it to be merged automatically when the jobs pipeline succeeds.

Learn more about Merge when pipeline succeeds

Cherry-picking changes

Cherry-pick any commit in the UI by simply clicking the Cherry-Pick button in a merged merge request or a specific commit.

Learn more about cherry picking merge requests

Subgroups: groups within groups

Create groups within groups to easily manage large numbers of people and projects.

Learn more about Subgroups

Easy upgrade process

Using our official Linux repositories or the official Docker image, upgrading GitLab is a breeze.

Learn how to upgrade your GitLab instance

Automatically close issue(s) when a merge request is merged

With GitLab, you can use specific keywords to close one or more issues as soon as a merge request is merged.

Learn more about automatically closing issues

Configurable issue closing pattern

Define your own specific keywords to close one or more issues as soon as a merge request is merged.

Learn more about automatically closing issues

Work in Progress merge requests (WIP)

Prevent merge requests from accidentally being accepted before they’re completely ready by marking them as Work In Progress (WIP). This gives you all the code review power of merge requests, while protecting unfinished work.

Learn more about WIP MRs

Custom Git Hooks

Leverage the power of Git Hooks and chain them together to fire off custom scripts when certain actions occur on the repository. If the commit is declined or an error occurs during the Git hook check, the error message of the hook will be present in GitLab’s UI. GitLab supports all types of hooks.

Learn how to use Git Hooks with GitLab

Responsive-first design

GitLab is built with a responsive-first design approach. Be it on a desktop, tablet or smartphone, GitLab is optimized to be viewed for the best result.

Community based, users can help shape the product

GitLab has open issue trackers for almost all of its operations. From GitLab itself to infrastructure and marketing, you can help shape the product.

View all GitLab contributors

Git LFS 2.0 support

Manage large files such as audio, video and graphics files with the help of Git LFS. Git LFS 2.0 file locking support helps large teams work with binary assets and is integrated with our native file locking feature.

Learn more about Git LFS support in GitLab

Security Dashboards

Security Dashboard report the latest security status of the default branch for each project

Learn more about Security Dashboards

Create projects with Git push

Push new projects to the desired location and a new private project will automatically be created.

Learn more about creating Projects

Supports geolocation-aware DNS

Having Geo replicated server(s) can make local pulls go more quickly, but without support for Geolocation-aware DNS, developers need to reconfigure their tools manually to point to their nearest geo replicated server. Users using Geolocation-aware DNS can be transparently directed to the closest server available and can access repository data faster.

Learn more about GitLab Geo

Advanced global search installed as default search

Advanced global search via ElasticSearch is installed and enabled as part of the core installation and provides the default search capability

Learn more about GitLab search

Groups dropdown in navigation

Searching for a group is directly available behind a lightweight dropdown menu, removing the need to navigate away from your work into a separate view when you’re looking for a hard-to-remember group.

Learn more about Groups

GitLab Flavored Markdown with CommonMark

GitLab Flavored Markdown is now rendered using CommonMark, a modern standard, for new Markdown content.

Learn more about GitLab Flavored Markdown

Initialize README on project creation

A repository can be initialized with an example README when creating a new project. If this option is checked, a project repository is initialized with a default master branch which can be cloned right away.

Learn more about Project creation

'Contribute to GitLab' link

GitLab Core and GitLab.com users can now find our GitLab contribution page with a handy link, available right away from your user profile menu.

Learn more about Contributing to GitLab

Allow SAML assurance level to bypass 2FA

it is now possible to honor the SAML provider’s assurance level, allowing to disable the two-factor authentification on GitLab side via a new SAML configuration option

Learn more about SAML OmniAuth Provider

Manage third party offers

GitLab 11.1 introduces the ability to control the display of third party offers in the administration area, providing more control over the display of these offers

Learn more about Third party offers

See JUnit test summaries in merge request widget

GitLab allows you to view JUnit test results from the merge request widget, giving you insight into quality impacts of your changes.

Learn more about JUnit test summaries in the merge request widget

User status message

Define and show your personal status message via an Emoji and text message, exposed on your profile page and on any comment and author line.

Learn more about Status messages

Private profile page

In certain situations, when privacy is of concern, users might not want to show their activity, contributions and personal projects. Activity-related information can be disabled in the profile settings.

Learn more about Private profiles

Download single repository files

When browsing through project repositories on GitLab, having direct access to single files is a relevant use case. A ‘Download’ button in the file viewer allows you to download individual files from the GitLab UI.

Learn more about Project repositories

Repository languages on project overview

A code languages bar on the project overview shows all relevant languages the GitLab repository consists of, including relative quantity.

Learn more about Projects

Interactive Web Terminals

Interactive web terminals allow you to connect to a running or completed Kubernetes or Shell runner job and manually run commands to better understand what’s happening in the system.

Learn more about Interactive Web Terminals

Custom file templates

Define custom LICENSE, .gitignore, Dockerfile and .gitlab-ci.yml templates to make consistency easier.

Learn more about custom file templates

Code Owners

Assign Code Owners to files to indicate the team members responsible for code in your project using a CODEOWNERS file.

Learn more about Code Owners

Protected Environments

Specify which person, group, or account is allowed to deploy to a given environment, allowing further protection and safety of sensitive environments.

Learn more about Protected Environments

Download as PDF

If you feel there are inaccurate statements in this comparison, please edit this page or propose edits by creating an issue. When creating an issue, please use the "Comparison page" template and assign to @dangordon to ensure we see your suggested changes. You can also send an email to dgordon@gitlab.com with your suggested edits if you're unable to create an issue or edit this page.

We strive for technical accuracy and will review and update this post for inaccuracies as quickly as possible.

GitLab is the trademark of GitLab, Inc. All other logos and trademarks are the logos and trademarks of their respective owners.

Choose the GitLab edition that is best for your team

Explore our products

Try GitLab Ultimate risk-free for 30 days.

No credit card required. Have questions? Contact us.