Quick Links

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 interface

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.

GitLab DevOps workflow

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:

BitBucket's clean interface 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.

aws codecommit home page

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.