Bitbucket
Bitbucket

10.3K
2.8K
397
GitHub
GitHub

34.9K
10K
3.5K
GitLab
GitLab

9K
2K
370

GitHub vs. Bitbucket vs. GitLab - Help me decide


At some point in any software project, you will need to share your code with other developers. If you’re using Git for source control, there are three primary options: Github, Bitbucket, or Gitlab. Understanding the differences and tradeoffs between these three repository management platforms is vital to choosing the best option for your team.

Pull (or Merge) Request Process

One of the core features in any team-based version control platform is the pull request process. This typically happens when a team member completes a new feature and wants to get their code merged into the development or production branch of the codebase.

The feature to be merged will typically be reviewed by another developer during a code review process, and they may want to use the pull request (called “merge request” in Gitlab) feature included in the repository management platform. Let’s take a look at the differences between Github, Bitbucket, and Gitlab in this area.

1. Github’s Pull Request Feature

The pull request process in Github is designed with team-based projects in mind. In order to facilitate that workflow, Github provides some interesting features:

  • Assign pull requests to teammates
  • Attach milestones, projects, and labels to provide context
  • Subscribe to be notified when the pull request changes
  • Diff of changes between source and base branch
  • One-click merge and delete source branch
  • Integration with external continuous integration tools
  • Pull request templates to ensure contributing guidelines are being followed
  • Conversations around parts of the code that require resolution
  • Required reviews to ensure that every pull request is signed off by someone before the merge

2. Bitbucket’s Pull Request Feature

Bitbucket's pull requests are similar, although they do not offer quite as many features. Bitbucket does offer everything you need though:

  • Assign pull requests to teammates
  • Advanced text editor for comments and descriptions
  • Subscribe to be notified when the pull request changes
  • Diff of changes between source and base branch
  • One-click merge and delete source branch
  • Integration with external continuous integration tools
  • Option to require reviewer approval before merge

3. Gitlab’s Merge Request Feature

While named differently, Gitlab merge requests work pretty much the same way as pull requests. You get most of the same core features:

  • Assign merge requests to teammates
  • WIP (Work In Progress) indicator to open merge requests before they're ready to be merged
  • Integration with milestones/labels for merge request context
  • Team members can subscribe to be notified when the request is merged
  • Diff of changes between source and base branch
  • Integration with external continuous integration tools
  • One-click merge and delete source branch

One usablity difference in Gitlab is that you have to make a couple clicks to get to the diff of changes - they aren't shown by default.

While Github's pull request process has the most unique features, it may be distracting if your team doesn't need all of them. Creating a sustainable, repeatable workflow is often better than trying to do everything.

Integrations

Another common use case for repository hosting platforms is to trigger continuous integration, or continuous deployment. Typically teams will use other services to manage these tasks, so the ability to link their source control repository with third party services is another core feature of Github, Bitbucket, and Gitlab.

Github’s marketplace recently underwent an overhaul, so they now have two places for integrations with third party tools: the Github Marketplace and Works with Github. Marketplace is smaller, but it allows third party applications to actually sell services through Github. Works with Github boasts several hundred integrations with other existing services. Github also has a robust REST API if you need to create your own custom integrations.

Bitbucket is owned by Atlassian so if you use Jira or Bamboo you may appreciate Bitbucket’s built-in integrations. Bitbucket also has a robust app marketplace, and an API that allows you to build your own integrations. It's also worth noting that Bitbucket has its own Pipelines tool that can do your continuous integration and delivery for you.

While Gitlab has fewer built-in integrations (20 are listed in the admin documentation) than either Github or Bitbucket, it is open source, meaning that any part of the code can be customized. This is rarely a necessity though as they also provide a robust plugin system and REST API. You can even customize the login page and user interface to project your team’s personality or company’s brand. Gitlab also offers its own continuous integration tool built into the platform.

Visibility for Open Source Projects

Github is the most popular source control management tool for open source projects because it’s also great for visibility. Projects hosted on Github can have their own public-facing issues, projects, teams, and pull requests. They’re also searchable, and may be featured in Github’s daily or weekly newsletter. Github includes a free hosting solution for static sites, so open source projects can serve up their documentation or landing pages for free on the platform.

Gitlab offers a most starred list, search feature, and free static site hosting, but they do not offer quite as many features for user profiles. For example, you cannot follow users on Gitlab like you can on Github.

Finally, Bitbucket has the option to create public repositories, but they do not currently offer a search feature. Bitbucket’s user profiles are also anaemic, and their static site hosting doesn’t allow custom domain names.

Sometimes public visibility isn’t a feature you want though. For example, some teams want source control to be completely locked down to a private network. In this case, you should consider whether or not your repository hosting platform can be self-hosted. In this case, Github, Gitlab, and Bitbucket all offer self-hosted versions of their product, but the pricing varies quite a bit.

Pricing

Pricing for all three of these repository management platforms is available in two flavors: cloud-hosted and self-hosted.

Cloud-Hosted Pricing Comparison

If your organization is able to use the lowest-tier cloud-hosted version of each platform, your costs will typically grow as a function of team size and whether or not the code you’re hosting is open source.

*Note: Github also includes a $7/month plan for individuals who want private repositories.

Each platform offers slightly different offerings at higher price points. For example, Github offers a 99.95% uptime SLA and 24/5 tech support starting at $21 per user per month, Bitbucket offers security features like IP whitelisting and required two-step verification starting at $5 per user per month, and Gitlab will give you more CI build minutes and a host of project management features for $19 per user per month. Bitbucket and Gitlab offer free trials if you think you might need some of these premium features.

Once your needs get more complex, I’d recommend checking out each provider’s hosting page to do your own comparison:

Self-Hosted Pricing Comparison

All three of these services also offers a self-hosted option - typically for enterprise customers or users with special security requirements.

While Github and Bitbucket offer self-hosting, only Gitlab is open source, which allows its self-hosted option to be the cheapest. That said, you may want additional support support,, so be sure to check out the pricing pages above to make sure you’re getting the best plan for your needs.

GitHub vs Bitbucket vs GitLab: What are the differences?

GitHub, Bitbucket, and GitLab are code collaboration and version control tools offering repository management. They each have their share of fans, though GitHub is by far the most-used of the three. Of the three, only GitLab is open source, though all three support open source projects. GitHub offers free public repositories; Bitbucket also offers free private repositories; GitLab offers a Community Edition which is entirely free.

- No public GitHub repository available -
- No public GitHub repository available -

What is Bitbucket?

Bitbucket gives teams one place to plan projects, collaborate on code, test and deploy, all with free private Git repositories. Teams choose Bitbucket because it has a superior Jira integration, built-in CI/CD, & is free for up to 5 users.

What is GitHub?

GitHub is the best place to share code with friends, co-workers, classmates, and complete strangers. Over three million people use GitHub to build amazing things together.

What is GitLab?

GitLab offers git repository management, code reviews, issue tracking, activity feeds and wikis. Enterprises install GitLab on-premise and connect it with LDAP and Active Directory servers for secure authentication and authorization. A single GitLab server can handle more than 25,000 users but it is also possible to create a high availability setup with multiple active servers.

Want advice about which of these to choose?Ask the StackShare community!

Why do developers choose Bitbucket?
Why do developers choose GitHub?
Why do developers choose GitLab?
What are the cons of using Bitbucket?
What are the cons of using GitHub?
What are the cons of using GitLab?

Why do developers choose GitHub vs Bitbucket vs GitLab?

  • GitHub is the leading choice, and thousands of open source projects live in GitHub’s repositories, so many people find it the most convenient for collaborating with others.
  • Bitbucket is built by Atlassian, so fans of Atlassian products may prefer Bitbucket.
  • GitLab is the only open source solution, and is also self-hosted.
What companies use Bitbucket?
What companies use GitHub?
What companies use GitLab?
What are some alternatives to Bitbucket, GitHub, and GitLab?
AWS CodeCommit
CodeCommit eliminates the need to operate your own source control system or worry about scaling its infrastructure. You can use CodeCommit to securely store anything from source code to binaries, and it works seamlessly with your existing Git tools.
SVN (Subversion)
Subversion exists to be universally recognized and adopted as an open-source, centralized version control system characterized by its reliability as a safe haven for valuable data; the simplicity of its model and usage; and its ability to support the needs of a wide variety of users and projects, from individuals to large-scale enterprise operations.
Gerrit
Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for.
Jira
Jira's secret sauce is the way it simplifies the complexities of software development into manageable units of work. Jira comes out-of-the-box with everything agile teams need to ship value to customers faster.
GitHub Enterprise
GitHub Enterprise lets developers use the tools they love across the development process with support for popular IDEs, continuous integration tools, and hundreds of third party apps and services.
See all alternatives
What tools integrate with Bitbucket?
What tools integrate with GitHub?
What tools integrate with GitLab?
Decisions about Bitbucket, GitHub, and GitLab
Russtopia Labs
Russtopia Labs
Sr. Doodad Imagineer at Russtopia Labs · | 3 upvotes · 19.1K views
GitLab
Go
GitHub
Gogs

I installed Gogs after a few repos I planned to use on GitHub disappeared without explanation, and after (unrelated) Microsoft's acquisition of same made me think about the over-centralization of community-developed software. A self-hosted solution that enables easy point-and-click mirroring of important repositories for my projects ensures I won't be bitten by upstream events like a component just disappearing.

It's also written in Go and is easy to install and configure, much more so than GitLab. The only major feature I wish it had is an integrated code review tool.

See more
Priit Kaasik
Priit Kaasik
Engineering Lead at Katana MRP · | 7 upvotes · 22K views
atKatana MRP
InVision
Slack
Microsoft Office 365
Jira
GitHub
Bitbucket
Confluence

How we ended up choosing Confluence as our internal web / wiki / documentation platform at Katana.

It happened because we chose Bitbucket over GitHub . We had Katana's first hackaton to assemble and test product engineering platform. It turned out that at that time you could have Bitbucket's private repositories and a team of five people for free - Done!

This decision led us to using Bitbucket pipelines for CI, Jira for Kanban, and finally, Confluence. We also use Microsoft Office 365 and started with using OneNote, but SharePoint is still a nightmare product to use to collaborate, so OneNote had to go.

Now, when thinking of the key value of Confluence to Katana then it is Product Requirements Management. We use Page Properties macros, integrations (with Slack , InVision etc.) to manage Product Roadmap, flash out Epic and User Stories.

We ended up with using Confluence because it is the best fit for our current engineering ecosystem.

See more
Daniel Quinn
Daniel Quinn
Senior Developer at Founders4Schools · | 4 upvotes · 5.9K views
atThe Paperless Project
GitLab
GitHub

We use GitHub because it's the default go-to place for the Free software community. Currently, Github is enjoying the network effect: you write code there because everyone writes there code there, so this choice was less of a choice than "what we all end up doing".

Personally, I prefer GitLab for its bundled-in tools like CI, boards, packaging, and Docker repo, but so long as the vast majority of talented nerds out there are on Github, that's where Paperless will be.

See more
Interest over time
Reviews of Bitbucket, GitHub, and GitLab
Avatar of veggiemonk
JavaScript Developer
Review ofGitLabGitLab

You cannot get easier setup and deployment with GitLab. The documentation is huge and many common use cases are covered. It has a Community Edition (CE, free, 100% open source) and an Enterprise Edittion (EE, see pricing). The CE is more than good enough. Although in the entreprise world, the EE is much better suited if, for instance, LDAP is needed. There is a Web UI that allows people to version their work without too much hassle. If you are a developer and have worked with git before this is really easy.

Avatar of sivakumar-kailasam
Staff Software Engineer
Review ofGitHubGitHub

For starters you can fork a repo, edit it online and send a pull request which is huge if its something very small that you want to commit. The whole pull request system, the UI and the UX are great. If I sent out a pull request that failed on travis CI then all I need to do is fix it in my fork and the original pull request will have these updates as well making it super easy for everyone involved. Overall a great service.

Review ofGitHubGitHub

I love GitHub! They provide a completely free service for hosting, storing, and collaborating on code. Seriously, if you aren't using them, go sign up now.

Review ofGitHubGitHub

Great collaboration-friendly git repository hosting. Plus integration with all sorts of other stuff, like Travis CI. But the command bar has disappeared...

Avatar of princesust
Science
Review ofGitHubGitHub

It's the best tools I have ever used.

How developers use Bitbucket, GitHub, and GitLab
Avatar of Airbnb
Airbnb uses GitHubGitHub

"Having a CI server building all commits across all branches was a huge first step, but to make this useful we needed to surface the outcome of these builds. This is where GitHub’s commit status API comes in. Every time our CI server begins a build, it pings GitHub’s commit status endpoint, and every time it completes a build it hits the endpoint again with the outcome. Now every open PR includes a yellow/red/green indicator for the branch in question, with a direct link to the build status page on our CI server. In practice this means more transparency, faster feedback cycles, and a guarantee that every branch merged into master has a passing test suite. This integration has been a huge help in keeping our master branch green, and has thus greatly reduced our deploy times (since engineers aren’t waiting on build failures to be resolved in master)."

Avatar of Matt Welke
Matt Welke uses GitHubGitHub

Pervasive, easy to use Git repo hosting. I host ongoing personal projects privately and my personal blog (via GitHub Pages).

I also take successful proofs of concept (for example, experimenting with linking AWS Lambda to Heroku Postgres to create a serverless SQL backed web app), and host them as public example repos. These are linked to Dependabot and CircleCI if they have tests so that dependencies can be kept up to date automatically over time and the code using the dependencies can stay fresh over time for example viewers.

Avatar of yaswanthgoud3235
yaswanthgoud3235 uses GitHubGitHub

GitHub is a Web-based Git version control repository hosting service. It is mostly used for computer code. It offers all of the distributed version control and source code management (SCM) functionality of Git as well as adding its own features. It provides access control and several collaboration features such as bug tracking, feature requests, task management, and wikis for every project

Avatar of Instacart
Instacart uses GitHubGitHub

Yeah, so we use GitHub, and we basically use a variant of continuous deployment where when anyone merges in a feature that they’ve finished with, they ship it immediately, and we bundle it up as a build pack and send it to all of our EC2 servers... Any developer on the team can trigger a build and deploy at any time. So on a given day, we probably deploy 20 or 30 times to prod.

Avatar of StackShare
StackShare uses GitHubGitHub

One thing I really wish GitHub had: Trello-style kanban for Issues. There are a bunch of services and tools that add Kanban to GitHub Issues. But Trello just seems far better. If GitHub had it’s own kanban tool, I’d probably use it. Right now it’s pretty painful to try to tie cards to commits manually (when/if we remember to).

Avatar of Eldoria
Eldoria uses GitLabGitLab

Als einer der größten Konkurrenten zu GitHub und BitBucket, stellt GitLab eine verlässliche Alternative dar. Als private GitLab Instanz oder als Service bietet GitLab alle Features die wir benötigen und das völlig Kostenfrei in der Community Edition. Hier liegen alle unsere Repositories.

Avatar of Wing Tang Wong
Wing Tang Wong uses BitbucketBitbucket

I was looking for an alternative to GitHub, where I could store my own private repositories. BitBucket filled that need and has performed extremely well.

I use Bitbucket's git repositories as a low cost config sync between servers.

Avatar of Scrayos UG (haftungsbeschränkt)
Scrayos UG (haftungsbeschränkt) uses GitLabGitLab

Gitlab offers us a self-hosted replacement for Github and even more than we were expecting from it. All of our code is hosted in our private GitLab-instance, that also hosts our artifacts and is used to deploy them into production.

Avatar of HyVive
HyVive uses GitLabGitLab

Our self hosted gitlab service provides us with a private and secure environment for developing and testing our internal software. All of our dockerfiles, source code and configuration files for our infrastructure are stored here.

Avatar of MOKA Analytics
MOKA Analytics uses BitbucketBitbucket

We use Bitbucket and Bitbucket Pipelines because of its tight integration with JIRA and code authorization features.

The primary drawback is that its extension ecosystem (e.g., PR review tools) is miles behind Github

Avatar of Refractal
Refractal uses GitLabGitLab

GitLab is our main Git server, housed on a separate box inside our VPN, it's diverse features and sandbox-support allows it to be an extremely good way to secure your source code.

Avatar of yaswanthgoud3235
yaswanthgoud3235 uses GitLabGitLab

GitLab is a web-based Git repository manager with wiki and issue tracking features, using an open source license, developed by GitLab Inc. The software

Avatar of Blair Gemmer
Blair Gemmer uses BitbucketBitbucket

Best GIT repository management software that allows free closed-source projects. Also works seamlessly with other Atlassian products.

Avatar of Aquarius Logics
Aquarius Logics uses BitbucketBitbucket

Great private repository capabilities that can be used for continuous integration in conjunction with Jira and Bamboo.

Avatar of papaver
papaver uses BitbucketBitbucket

had to use it as a couple of clients had repos on it. worst of the git services. i try to stay far far away.

How much does Bitbucket cost?
How much does GitHub cost?
How much does GitLab cost?