GitHub fills a great role of being the go-to place to host open-source projects. Nothing’s challenging that—everyone has a GitHub account—but if you’d like to get real work done with a team of people, better tools exist for the job.
Note, this article lists alternatives to Github as a managed source control platform. Most of them will have similar issue-tracking features, but if you’re looking for an upgrade to Github’s management features, you may want to consider looking at Jira or Azure DevOps.
Editor’s Note: We actually use Github internally here at LifeSavvy Media, and have no plans to change to anything else.
GitLab
GitLab is the closest direct competitor to GitHub that you’ll find. It has a very similar interface, and enables you to create an unlimited number of public and private repos. And, while it has some in-depth tools, it still functions generally the same, so you’ll find the transition to GitLab to be quite easy.
GitLab isn’t just a GitHub clone, though. It’s much more focused on a DevOps workflow, with built in Continuous Integration tools and support for pipelines. With GitLab, your CI/CD tool is the same as your source control. This is a common theme among GitHub alternatives, as it’s one area that GitHub doesn’t focus as hard on.
Better yet, the community version of GitLab itself is open source, meaning you can run your own private version of GitLab for your organization on your own servers, without having to worry about your proprietary source code being in someone else’s “cloud.” You can read our guide to installing and configuring GitLab to learn more.
BitBucket
BitBucket is Atlassian’s hosted git solution. It functions large like GitHub or GitLab, but is more suited for private repositories. You can make public ones, but that isn’t the focus, as BitBucket is lacking in 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, as they’re created by the same company. BitBucket contains a lot of integrations with Jira, including creating branches from Jira issues, linking commits to Jira issues, and editing issues 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 heavily uses Jira, you may enjoy using BitBucket.
AWS CodeCommit
AWS’s CodeCommit service is a git repository with many integrations with the AWS ecosystem. As far as being a good alternative to GitHub, the interface is a little clunky, as it suffers from AWS’s user interface design. However, it’s usable.
The best part of CodeCommit are the integrations with EC2 and Lambda. With the source control being on the same platform as your servers, automating the deployment pipeline is easy. CodeCommit has options for running tests before deployment, 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 of Lambda functions.
AWS CodeCommit might not be the best git service to use as your primary source control, but it’s certainly good to use to automate code deployments on EC2 or Lambda. With this setup, you’d use two remotes—whenever code is ready to deploy, you’d 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’s worth mentioning the alternatives to git itself.
Perforce is a centralized source control system. git is distributed; everyone’s local repository is only linked to each other through the remote. This model has many limitations, especially with huge repositories. You don’t want every employee to have access to your full source code. Perforce manages these issues better than git does.
Perforce (and other non-Git options) are also much better at handling large binary files, something git struggles doing. Most hosted git providers—including GitHub—will limit file sizes to less than 100 MB, both to cut storage costs and also to discourage large files in the first place. An extension, called Git Large File Storage, mitigates the issue by storing large files on a seperate server, but it isn’t a perfect solution.
Other non-Git source control options exist, such as Team Foundation Version Control (TFVC) , Subversion, and Mercurial. Most of these require you to host them yourself; BitBucket used to support Mercurial repos, but they’ve deprecated the use of them recently.
Host a Git Server Yourself
Another option is to host it yourself. All GitHub (or any other service on this list) is is a web-based frontend for managing a git server. That git server is simply a remote that acts as an official reference for local git repos. You can run your own git server using the out-of-the-box git install that most Linux distros have and connect to that, instead of having someone else host it for you.
You can read our guide to setting this up to learn more, or you can read our guide to setting up GitLab Community Edition, which enables you to host your own git server while still having a web interface.
While not having web-based access is a bit of a downside, if everyone has a GUI git client or ample knowledge of the terminal, it can be a viable alternative. One thing to note is that if you’re hosting the server yourself, you’re responsible for the data stored on it. You shouldn’t really be using a git provider as a backup anyway, but if it’s in your own cloud, you need to take proper care of the server.