GitHub plays a big role in being the place where you host open source projects. Nothing challenges it – everyone has a GitHub account – but if you want to get real work with a team of people, there are better tools for the job.
Note that this article presents alternatives to Github as a managed source control platform. Most of them have similar feature tracking features, but if you are looking for an upgrade to Github's management features, consider looking at Jira or Azure DevOps.
Editor's note: We actually use Github internally here at LifeSavvy Media and have no plans to switch to anything else.
GitLab is the closest direct competitor to GitHub that you find. It has a very similar interface and allows you to create an unlimited number of public and private scratches. And even though it has some in-depth tools, it still works pretty much the same way, so you find the transition to GitLab quite easy.
GitLab is not just a GitHub clone. It is much more focused on a DevOps workflow, with built-in continuous integration tools and pipeline support. With GitLab, your CI / CD tool is the same as your source control. This is a common theme among GitHub options, as it is an area that GitHub does not focus as hard on.
Even better, the community version of GitLab itself is open source, which means you can run your own private version of GitLab for your organization on your own servers without having to worry about it that your own source code is in someone else's "cloud." You can read our guide to installing and configuring GitLab to learn more.
BitBucket is the host of Atlassian's
git solution. It works like GitHub or GitLab, but is more suitable for private repositories. You can publish these, but it's not in focus, as BitBucket lacks the "Explore" features.
The interface itself is clean and organizes everything with a sidebar:
If you use Jira, you may find this interface quite similar since it is created by the same company. BitBucket contains many integrations with Jira, including creating branches from Jira queries, linking commitments to Jira queries, and editing queries directly from BitBucket. Jira already has a number of integrations with generic
git but BitBucket and Jira are built specifically for each other.
Really, not much more makes BitBucket stand out other than its integration with Jira. If your team already uses Jira heavily, you can enjoy using BitBucket.
AWS's CodeCommit service is a
git archive with many integrations with the AWS ecosystem. When it comes to being a good alternative to GitHub, the interface is a bit clumsy as it suffers from AWS's user interface design. But it is useful.
The best part of CodeCommit is the integrations with EC2 and Lambda. With the source control on the same platform as your servers, it is easy to automate the distribution pipeline. CodeCommit has options for running tests before distribution, such as deploying to one server at a time, half of the servers, or all at once. You can also directly update the source code for Lambda features.
AWS CodeCommit may not be the best
git service that can be used as your primary source control, but it is certainly good to use to automate code deployments on EC2 or Lambda. With this installation, you would use two remote controls – when code is ready to deploy, you would push the changes from your primary remote to CodeCommit.
Other source control tools: TFVC, Perforce and Subversion
While the other options on this list use
git under the hood, it is worth mentioning the alternatives to
Perforce is a centralized source control system.
git is distributed; everyone's local repository is only linked to each other via the remote control. This model has many limitations, especially with huge repositories. You do not want all employees to have access to your full source code. Perforce handles these problems better than
Perforce (and other non-Git options) are also much better at handling large binary files, something
git struggles to do. Most host
git providers – including GitHub – will limit file sizes to less than 100 MB, both to reduce storage costs and also to deter large files in the first place. An add-on, called Git Large File Storage, mitigates the problem by storing large files on a separate server, but it is not a perfect solution.
Other non-Git source control options are available, such as Team Foundation Version Control (TFVC), Subversion and Mercurial. Most of these require that you host them yourself; BitBucket used to support Mercurial scratches, but they have recently written off their use.
Host a Git Server Yourself
Another option is to host it yourself. All GitHub (or any other service on this list) is a web-based frontend for managing a
git server. The
git server is simply a remote control that acts as an official reference for local
git scratches. You can run your own
git server with the out-of-the-box
git installation that most Linux distros have and connect to it instead of someone else hosting it for you.
You can read our guide to set it up here to learn more, or you can read our guide to set up GitLab Community Edition, which allows you to host your own
git server while still having a web interface.
Although not having web-based access is a bit of a disadvantage, if everyone has a GUI git client or good knowledge of the terminal, it can be a viable alternative. One thing to note is that if you host the server yourself, you are responsible for the data stored on it. You shouldn't really use a
git provider as a backup anyway, but if it's in your own cloud, you need to take good care of the server.