GitHub.com vs. GitLab.com Silver
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. GitLab includes 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 | | |
|---|---|---|
| Free CI/CD with shared or personal Runners
GitLab.com has shared Runners that allow you to use GitLab CI/CD completely free up to 2000 build minutes for private projects and unlimited for public projects. Alternatively, you can set up your own Runner for faster build processing, unlimited build minutes, or special requirements. | ||
| Built-in CI/CD
GitLab has built-in Continuous Integration/Continuous Delivery, for free, no need to install it separately. Use it to build, test, and deploy your website (GitLab Pages) or webapp. The job results are displayed on merge requests for easy access. | ||
| Innersourcing
Internal projects in GitLab allow you to promote innersourcing of your internal repositories. | ||
| Commit graph and reporting tools
GitLab provides commit graphs and reporting tools about collaborators’ work. | ||
| 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. | ||
| Availability
GitLab.com is at 99.5% availability while we want to be above 99.95%. We’re hiring to improve this in the last two months of 2017 and in 2018. | ||
| The best place for large open source projects
GitLab is meant to be the best place for any software project. The team behind GitLab is addressing issues that maintainers and contributors to large open source projects are facing, to make it easier to do both. | ||
| 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. | ||
| Export projects
GitLab allows you to export your project to other systems. | ||
| 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. | ||
| 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. | ||
| 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. | ||
| Allow edits from upstream maintainers in branch
When a user opens a merge request from a fork, they are given the option to allow upstream maintainers to collaborate with them on the source branch. This allows the maintainers of the upstream project to make small fixes or rebase branches before merging, reducing the back and forth of accepting community contributions. | ||
| Application performance monitoring
GitLab collects and displays performance metrics for deployed apps, leveraging Prometheus. Developers can determine the impact of a merge and keep an eye on their production systems, without leaving GitLab. | ||
| GitLab server monitoring
GitLab comes out of the box enabled for Prometheus monitoring with extensive instrumentation, making it easy to ensure your GitLab deployment is responsive and healthy. | ||
| 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. | ||
| Quick actions
GitLab provides a convenient way to change metadata of an issue or merge request without leaving the comment field with 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. | ||
| 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. | ||
| First time contributor badge
Highlight first-time contributors in a project. | ||
| SUPPORT file link
Link from new issues to a SUPPORT file, pointing to support resources. | ||
| 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. | ||
| Time tracking
Time Tracking in GitLab lets your team add estimates and record time spent on issues and merge requests. | ||
| Preview your changes with Review Apps
With GitLab CI/CD you can create a new environment for each one of your branches, speeding up your development process. Spin up dynamic environments for your merge requests with the ability to preview your branch in a live environment. | ||
| New features every month
GitLab is updated with new features and improvements every month on the 22nd. | ||
| IPv6 ready
If you host GitLab yourself, IPv6 is supported as long as your underlying provider can support it. GitLab.com on the other hand does not support IPv6 at the moment due to limited provider support. | ||
| Ease of migration from other providers
GitLab lets you easily migrate all repos, issues and merge request data from your previous provider. | ||
| 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. | ||
| Related issues
Explicitly mark issues as related and track their status. | ||
| A comprehensive API
GitLab provides APIs for most features, allowing developers to create deeper integrations with the product. | ||
| Burndown Charts for Project Milestones
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. | ||
| Burndown Charts for Group Milestones
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. | ||
| Search files with fuzzy file finder
GitLab provides a way to search a file in your repository in one keystroke. | ||
| Multiple assignees for issues
Assign more than one person to an issue at a time. | ||
| Squash and merge
Combine commits into one so that main branch has a simpler to follow and revert history. | ||
| Remote repository push mirroring
Mirror a repository from your local server to elsewhere. | ||
| Remote repository pull mirroring
Mirror a repository from elsewhere to your local server. | ||
| Export issues as CSV
Issues can be exported as CSV from GitLab and are sent to your default notification email as an attachment. | ||
| 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. | ||
| Inline commenting and discussion resolution
Code or text review is faster and more effective with inline comments in merge requests. Leave comments and resolve discussions on specific lines of code. In GitLab, Merge Request inline comments are interpreted as a discussion. You can configure your project to only accept merge requests when all discussions are resolved. | ||
| Code Owners
The ability to specify code owners or reviewers in the repository. | ||
| Subgroups: groups within groups
Create groups within groups to easily manage large numbers of people and projects. | ||
| 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. | ||
| Control
Take control of maintenance downtime, don’t be at the mercy of your hosting provider. Control how and where your code is backed up and stored. | ||
| You decide when you upgrade
GitLab releases a new version each month and lets you choose when to upgrade. | ||
| Configurable issue closing pattern
Define your own specific keywords to close one or more issues as soon as a merge request is merged. | ||
| Navigate to method/function in a merge request diff
When viewing a merge request diff, navigate directly to a method/function in a changed file. | ||
| 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. | ||
| Integrated Git-powered wikis
A separate system for documentation called Wiki, is built right into each GitLab project. Every Wiki is a separate Git repository. | ||
| 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. | ||
| 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. | ||
| Create projects with Git push
Push new projects to the desired location and a new private project will automatically be created. | ||
| Keep personal email private
Use a noreply email address for your commits instead of your personal email address private. | ||
| Kubernetes Cluster Monitoring
Monitor key metrics of your connected Kubernetes cluster. | ||
| ChatOps
Execute common actions directly from chat, with the output sent back to the channel. | ||
| Deploy Tokens
Provide read-only access to specific repositories or container images to external infrastructures that need to access your data, for example to deploy applications on Kubernetes. | ||
| View Kubernetes pod logs
Quickly and easily view the pod logs of an app deployed to Kubernetes. | ||
| 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. | ||
| 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 | ||
| Security Dashboards
Security Dashboard report the latest security status of the default branch for each project | ||
| 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. | ||
| GitLab Flavored Markdown with CommonMark
GitLab Flavored Markdown is now rendered using CommonMark, a modern standard, for new Markdown content. | ||
| 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. | ||
| '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. | ||
| 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 | ||
| 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 |
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.