Explore these links for deeper insights on how Bitbucket and GitLab compare
Explore these links for deeper insights on how Bitbucket and GitLab compare
FEATURES |
![]() |
|
---|---|---|
Free CI/CD with GitLab hosted or self-managed Runners
GitLab.com hosted runners allow you to use GitLab CI/CD completely free up to 400 build minutes for private projects and 50,000 minutes for public projects. Use your own runner for unlimited build minutes or special build environment 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. |
|
|
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. |
|
|
Issues
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. |
|
|
Milestones
Create and manage milestones at both the project and group levels, viewing all the issues for the milestone you’re currently working on, representing an Agile program increment or a release. |
|
|
Iterations
Create and manage iterations at the group level, view all the issues for the iteration you’re currently working on within your group or project, and enable all subgroups and projects to stay in sync on the same cadence. |
|
|
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. |
|
|
Issue Dependencies
Explicitly mark issues as blocked and blocking and track their status. Blocked issues are visible in the issue card view for easy identification. |
|
|
Linked Issues
Mark issues as related to one another. |
|
|
Move Issue to Another Project
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. |
|
|
Mark Issue as Duplicate
Mark an issue as a duplicate of another issue, closing it. |
|
|
Quick Actions
GitLab provides a convenient way to change metadata of an issue or merge request without leaving the comment field with quick actions. |
|
|
Rich Object Summary on Link Hover
View an information-rich summary by hovering over links to users, issues, merge requests, and other objects in GitLab. |
|
|
Create GitLab Branch from Jira Development Panel
Create a GitLab branch from within the development panel of a Jira issue. |
|
|
Create GitLab Merge Request from Jira Development Panel
Create a GitLab merge request from within the development panel of a Jira issue. |
|
|
Project Issue Board
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. |
|
|
Time Tracking
Time Tracking in GitLab lets your team add estimates and record time spent on issues and merge requests. |
|
|
Protected branches
Granular permissions for branches you want to protect. |
|
|
Commit graph and reporting tools
GitLab provides commit graphs and reporting tools about collaborators’ work. |
|
|
Required Merge Request Approvals
When a project needs multiple sign-offs, you can require every merge request to be approved before merging. With Required Merge Request Approvals you can set the number of necessary approvals and predefine a list of specific approvers. In turn, guarantee the quality and the standards of your code. |
|
|
Multiple approvers in code review
In GitLab, to ensure strict code review, you can require a minimum number of users to approve of a merge request before it is able to be merged. You can undo an approval by removing it after the fact. |
|
|
Approval rules for code review
Make sure the right people review merge requests with approval rules by specifying lists of eligible approvers, the minimum number of approvals for each, and which target branches they protect. This makes it easy to request review from different teams like Engineering, UX and Product. |
|
|
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. |
|
|
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 a fork
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. |
|
|
Search files with fuzzy file finder
GitLab provides a way to search a file in your repository in one keystroke. |
|
|
Fast-forward merge with option to rebase
With this setting at the project level, you can ensure that no merge commits are created and all merges are fast-forwarded. When a fast-forward merge is not possible, the user is given the option to rebase. |
|
|
Remote repository push mirroring
Mirror a repository from your local server to elsewhere. Push mirroring is supported via HTTP and SSH using password authentication, and using public-key authentication with SSH. |
|
|
Reject unsigned commits
GitLab Premium allows you to enforce GPG signatures by rejecting unsigned commits. |
|
|
Verified Committer
Verify that a push only contains commits by the same user performing the push. In development for GitLab. Follow this link for more information. |
|
|
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. |
|
|
GPG Signed Commits
Sign commits and prove that a commit was performed by a certain user. |
|
|
X.509 Signed Commits and Tags
Sign commits and prove that a commit was performed by a certain user. |
|
|
Server Hooks
Leverage the power of Server 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. |
|
|
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. |
|
|
S/MIME Signed Commits
Sign commits and prove that a commit was performed by a certain user. |
|
|
Optional Merge Request Approvals
Code review is an essential practice of every successful project, and giving your approval once a merge request is in good shape is an important part of the review process, as it clearly communicates the ability to merge the change. |
|
|
Git protocol v2 support
Git’s wire protocol defines how clones, fetches and pushes are communicated between the client and server. Git protocol v2 improves performance of fetch commands and enables future protocol improvements. |
|
|
Partial Clone
Partial Clone is an optimization for very large repositories. |
|
|
Web IDE
Contribute to projects faster by using the Web IDE to avoid context switching in your local development environment. The Web IDE is integrated with merge requests and GitLab CI so that you can resolve feedback, fix failing tests and preview changes live with client side evaluation without leaving the Web IDE. |
|
|
Live Preview in the Web IDE
Preview changes as you make them to your JavaScript and static HTML projects with Live Preview in the Web IDE. |
|
|
Web Terminal for Web IDE
Interact with your code in a Web Terminal in the Web IDE to inspect API responses, experiment in a REPL, or compile your code. |
|
|
File Syncing to Web Terminal
Changes made in the Web IDE will now be synced to the Web Terminal. User changes made in the Web IDE can now be tested within the Web Terminal before committing them to the project. |
|
|
EditorConfig in the Web IDE
The Web IDE supports the use of |
|
|
Paste images in Markdown in the Web IDE
When editing Markdown files in the Web IDE you can now paste images into the content so that they’ll be automatically uploaded and referenced in the content. |
|
|
Real-time feedback for .gitlab-ci.yml in Web IDE
To make it easier to configure your GitLab CI pipeline, the Web IDE now provides real-time linting and completion when editing Learn more about .gitlab-ci.yml editing feedback in the Web IDE |
|
|
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. |
|
|
Design Management
Design Management allows users to upload design assets (such as wireframes and mockups) to GitLab Issues and keep them stored in one single place, giving product designers, managers, and engineers a seamless way to collaborate on design proposals. They can be easily uploaded and are stored in versions. You can start a thread by clicking on the image on the exact location you would like the discussion to be focused on. |
|
|
GitLab-Figma Plugin
Our Figma plugin allows you to upload Figma frames and components to GitLab issues. |
|
|
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. |
|
|
Application performance alerts
GitLab allows engineers to seamlessly create service level indicator alerts and be notified of any desired events, all within the same workflow where they write their code. |
|
|
GitLab Self-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. |
|
|
Project Level Value Stream 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. |
|
|
Group Level Value Stream Analytics
GitLab provides a group 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. |
|
|
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. (Codefresh will be ending their support for private docker registries as of May 1, 2020 |
|
|
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. Review Apps support both static and dynamic URLs. |
|
|
Environments Auto-stop
This feature allows users to configure an optional expiration date which can be set for review app environments. |
|
|
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. |
|
|
IPv6 ready
Both GitLab.com and GitLab Self-manages support 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. |
|
|
Multiple LDAP / AD server support
Link multiple LDAP servers to GitLab for authentication and authorization |
|
|
Access to and ability to modify source code
GitLab 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. |
|
|
Code Search
Provides code search across all repositiores in the entire GitLab instance. |
|
|
Advanced Search
Provides faster, more advanced search across your entire GitLab instance. |
|
|
Disaster Recovery
Fail over in minutes to another data-center. |
|
|
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. |
|
|
Projects
Organize your repository into private, internal, or public projects. |
|
|
Merge Requests
Create merge requests and @mention team members to review and safely merge your changes. |
|
|
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 and can be left on any line, changed or unchanged. You can configure your project to only accept merge requests when all discussions are resolved. |
|
|
Activity Stream
View a list of the latest commits, merges, comments, and team members on your project. |
|
|
Subgroups: groups within groups
Create groups within groups to easily manage large numbers of people and projects. |
|
|
Object storage for LFS
LFS files can be stored on Object Storage (Amazon S3) |
|
|
Globally distributed cloning with GitLab Geo
When development teams are spread across two or more geographical locations, but their GitLab instance is in a single location, fetching and cloning large repositories can take a long time. Built for distributed teams, GitLab Geo allows for read-only mirrors of your GitLab instance, reducing the time it takes to clone and fetch large repos and improving your collaboration process. |
|
|
Support for Scaled Architectures
GitLab Premium includes support for scaling GitLab services across multiple nodes to manage demands on your system and provide redundancy. GitLab has developed reference architectures so you can easily determine the optimal architecture for your needs. |
|
|
Deploy Boards
Deploy Boards offer a consolidated view of the current health and status of each CI/CD environment running on Kubernetes. The status of each pod of your latest deployment is displayed seamlessly within GitLab without the need to access Kubernetes. |
|
|
You decide when you upgrade
GitLab releases a new version each month and lets you choose when to upgrade. |
|
|
Easy upgrade process
Using our official Linux repositories or the official Docker image, upgrading GitLab is a breeze. |
|
|
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. |
|
|
Draft merge requests
Prevent merge requests from accidentally being accepted before they’re completely ready by marking them as Draft. This gives you all the code review power of merge requests, while protecting unfinished work. |
|
|
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. |
|
|
Create projects with Git push
Push new projects to the desired location and a new private project will automatically be created. |
|
|
SAML SSO for Groups
Connect a group in GitLab to a SAML identity provider to manage authentication. |
|
|
View Kubernetes pod logs
The monitoring of servers, application, network and security devices via generated log files to identify errors and problems for analysis. GitLab makes it easy to view the logs of running pods in connected Kubernetes clusters. By displaying the logs directly in GitLab, developers can avoid having to manage console tools or jump to a different interface. |
|
|
Restrict access by IP address
Restrict access at the group level to incoming traffic adhering to an IP address subnet, keeping your code secure. |
|
|
Enforced Two-factor Authentication (2FA)
Two-factor authentication secures your account by requiring a second confirmation, in addition to your password. That second step means your account stays secure even if your password is compromised. The ability to enforce 2FA provides further security by making sure all users are using it. |
|
|
Git protocol v2 support
Git’s wire protocol defines how clones, fetches and pushes are communicated between the client and server. Git protocol v2 improves performance of fetch commands and enables future protocol improvements. |
|
|
Works with multiple repository types
Supports more than one repository type, such as Git, Subversion, Perforce, CVS, Mercurial. |
|
|
Maintenance mode
Maintenance mode allows systems administrators to perform maintenance operations, such as preparing for a scheduled failover, with minimal disruption to end users. |
|
|