GitLab EEP vs. GitHub.com

GitLab compared to other tools

GitLab is the next-generation development toolset that covers 100% of your software development lifecycle.

GitLab unifies chat, issues, code review, CI, CD, and cycle analytics into a single UI. Unlike other source code management tools that only support a portion of your development lifecycle, GitLab delivers a unified experience for every step of the development lifecycle providing the most efficient approach to software delivery. So no matter what line of business you're in, GitLab gives you the edge to compete, innovate, and win.

FEATURES

Built-in CI/CD

GitLab has built-in Continuous Integration/Continuous Delivery, for free.

Learn more about CI/CD

Flexible permissions

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.

See the various roles

Innersourcing

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

Find out more about innersourcing

Work-in-Progress Protection

Simply add 'WIP' to the title of a merge request to prevent anyone from merging it. This gives you all the code review power of merge requests, while protecting unfinished work.

WIP Merge documentation

Group-level milestones

View all the issues for the milestone you’re currently working on across multiple projects.

Learn more about group-level milestones

Fast page load

Some other services have faster pageloads than GitLab.com right now, we're actively working on improving this. Self-hosted instances of GitLab CE/EE will be performant up to tens of thousands of users.

Read more

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.

Making it easier to get up and running with GitLab

Export projects

GitLab allows you to export your project to other systems.

We don't restrict access to your data

Powerful Issue Tracker

Quickly set the status, assignee or milestone for multiple issues at the same time or easily filter them on any properties. See milestones and issues across projects.

Learn more about the Issue Tracker

Due dates for individual issues

In GitLab, you can set a due date for individual issues. This is very convenient if you have small tasks with a specific deadline.

Due dates documentation

Move issues between projects

You can move issues between projects in GitLab. All links, history and comments will be copied and the original issue will reference the newly moved issue. This makes working with multiple issue trackers much easier.

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.

See how in our documentation

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.

GitLab issue to implement the same feature

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.

Learn more about monitoring deployed apps

Cycle Analytics

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.

Learn more about Cycle Analytics

Slash commands

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

Documentation about slash commands

Issue boards

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.

Learn more about Issue Boards

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.

See the GitLab issue to implement this

First time contributor badge

Highlight first-time contributors in open source projects

See the GitLab issue to implement this

SUPPORT file link

Link from new issues to a SUPPORT file, pointing to support resources

See the GitLab issue to implement this

Built-in Container 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.

Documentation on Container Registry

Time tracking

Time Tracking in GitLab lets your team add estimates and record time spent on issues and merge requests.

Learn more about Time Tracking

Review Apps

With Review Apps you can spin up dynamic environments for your merge requests and preview your branch in a live environment.

Learn more about Review Apps

New features every month

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

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

Group milestones

Create and manage milestones across projects, from group level.

Learn more about Group milestones

Related issues

Explicitly mark issues as related and track their status.

Learn more about Related Issues

A comprehensive API

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

Read our API Documentation

Issue Weights

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

Read our Issue Weights documentation

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

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

Multiple assignees for issues

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

Read our Multiple Assignees 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 mirroring

Mirror a repository from elsewhere on your local server.

Learn more about repository 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

Inline commenting and resolution

Leave comments and resolve discussions on specific lines of code.

Learn more about resolving discussions

Code Owners

The ability to specify code owners or reviewers in the repository

GitLabs issue to implement this

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.

Deploy Boards

GitLab Enterprise Edition Premium ships with Deploy Boards offering a consolidated view of the current health and status of each CI environment running on Kubernetes. The status of each pod of your latest deployment is displayed seamlessly within GitLab without the need to access Kubernetes.

Learn more about Deploy Boards