What is Git and what are its top alternatives?
Top Alternatives to Git
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. ...
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. ...
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. ...
Visibility, access control, workflow and code management for Git environments. Flexibility of collaborating on the same codebase and code reviews using any combination of Perforce and Git workflows and tools without compromise. ...
Mercurial is dedicated to speed and efficiency with a sane user interface. It is written in Python. Mercurial's implementation and data structures are designed to be fast. You can generate diffs between revisions, or jump back in time within seconds. ...
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. ...
It provides excellent command line help and output. It is a merge based solution. It doesn't rebase feature branches. ...
Git alternatives & related posts
- Open source friendly1.8K
- Easy source control1.5K
- Nice UI1.2K
- Great for team collaboration1.1K
- Easy setup861
- Issue tracker502
- Great community484
- Remote team collaboration480
- Great way to share448
- Pull request and features planning441
- Just works144
- Integrated in many tools130
- Free Public Repos117
- Github Gists112
- Github pages108
- Easy to find repos81
- Open source60
- Easy to find projects58
- Network effect56
- It's free56
- Extensive API48
- Developer Profiles33
- Git Powered Wikis32
- Great for collaboration29
- It's fun23
- Community SDK involvement22
- Clean interface and good integrations21
- Learn from others source code19
- It integrates directly with Azure14
- Because: Git14
- Wide acceptance13
- Large community10
- Standard in Open Source collab9
- It integrates directly with Hipchat8
- Beautiful user experience7
- Cloud SCM6
- Easy to discover new code libraries6
- Smooth integration5
- Nice API5
- It's awesome5
- Hands down best online Git service available4
- Remarkable uptime4
- Easy to use and collaborate with others3
- CI Integration3
- Free HTML hosting3
- Loved by developers3
- Quick Onboarding3
- Security options3
- Simple but powerful3
- Uses GIT3
- Unlimited Public Repos at no cost3
- Version Control3
- Nice to use2
- Easy deployment via SSH1
- Owned by micrcosoft1
- Good tools support1
- Free HTML hostings1
- Self Hosted1
- All in one development service1
- Easy to use1
- Free private repos1
- Easy source control and everything is backed up1
- Leads the copycats1
- Never dethroned1
- Issues tracker1
- Easy and efficient maintainance of the projects1
- IAM integration1
- Owned by micrcosoft48
- Expensive for lone developers that want private repos37
- Relatively slow product/feature release cadence15
- API scoping could be better10
- Only 3 collaborators for private repos8
- Limited featureset for issue management3
- GitHub Packages does not support SNAPSHOT versions2
- Have to use a token for the package registry1
- No multilingual interface1
- Takes a long time to commit1
related GitHub posts
I was building a personal project that I needed to store items in a real time database. I am more comfortable with my Frontend skills than my backend so I didn't want to spend time building out anything in Ruby or Go.
I stumbled on Firebase by #Google, and it was really all I needed. It had realtime data, an area for storing file uploads and best of all for the amount of data I needed it was free!
I built out my application using tools I was familiar with, React for the framework, Redux.js to manage my state across components, and styled-components for the styling.
Now as this was a project I was just working on in my free time for fun I didn't really want to pay for hosting. I did some research and I found Netlify. I had actually seen them at #ReactRally the year before and deployed a Gatsby site to Netlify already.
Netlify was very easy to setup and link to my GitHub account you select a repo and pretty much with very little configuration you have a live site that will deploy every time you push to master.
With the selection of these tools I was able to build out my application, connect it to a realtime database, and deploy to a live environment all with $0 spent.
If you're looking to build out a small app I suggest giving these tools a go as you can get your idea out into the real world for absolutely no cost.
Our whole DevOps stack consists of the following tools:
- GitHub (incl. GitHub Pages/Markdown for Documentation, GettingStarted and HowTo's) for collaborative review and code management tool
- Respectively Git as revision control system
- SourceTree as Git GUI
- Visual Studio Code as IDE
- CircleCI for continuous integration (automatize development process)
- Prettier / TSLint / ESLint as code linter
- SonarQube as quality gate
- Docker as container management (incl. Docker Compose for multi-container application management)
- VirtualBox for operating system simulation tests
- Kubernetes as cluster management for docker containers
- Heroku for deploying in test environments
- nginx as web server (preferably used as facade server in production environment)
- SSLMate (using OpenSSL) for certificate management
- Amazon EC2 (incl. Amazon S3) for deploying in stage (production-like) and production environments
- PostgreSQL as preferred database system
- Redis as preferred in-memory database/store (great for caching)
The main reason we have chosen Kubernetes over Docker Swarm is related to the following artifacts:
- Key features: Easy and flexible installation, Clear dashboard, Great scaling operations, Monitoring is an integral part, Great load balancing concepts, Monitors the condition and ensures compensation in the event of failure.
- Applications: An application can be deployed using a combination of pods, deployments, and services (or micro-services).
- Functionality: Kubernetes as a complex installation and setup process, but it not as limited as Docker Swarm.
- Monitoring: It supports multiple versions of logging and monitoring when the services are deployed within the cluster (Elasticsearch/Kibana (ELK), Heapster/Grafana, Sysdig cloud integration).
- Scalability: All-in-one framework for distributed systems.
- Other Benefits: Kubernetes is backed by the Cloud Native Computing Foundation (CNCF), huge community among container orchestration tools, it is an open source and modular tool that works with any OS.
- Easy to use19
- Simple code versioning13
- User/Access Management4
- Complicated code versionioning by Subversion3
- Branching and tagging use tons of disk space6
related SVN (Subversion) posts
I use Visual Studio Code because at this time is a mature software and I can do practically everything using it.
It's free and open source: The project is hosted on GitHub and it’s free to download, fork, modify and contribute to the project.
Multi-platform: You can download binaries for different platforms, included Windows (x64), MacOS and Linux (
LightWeight: It runs smoothly in different devices. It has an average memory and CPU usage. Starts almost immediately and it’s very stable.
.properties, XML and JSON files.
Integrated tools: Includes an integrated terminal, debugger, problem list and console output inspector. The project navigator sidebar is simple and powerful: you can manage your files and folders with ease. The command palette helps you find commands by text. The search widget has a powerful auto-complete feature to search and find your files.
Extensible and configurable: There are many extensions available for every language supported, including syntax highlighters, IntelliSense and code completion, and debuggers. There are also extension to manage application configuration and architecture like Docker and Jenkins.
Integrated with Git: You can visually manage your project repositories, pull, commit and push your changes, and easy conflict resolution.( there is support for SVN (Subversion) users by plugin)
I use Git instead of SVN (Subversion) because it allows us to scale our development team. At any given time, the Zulip open source project has hundreds of open pull requests from tens of contributors, each in various stages of the pipeline. Git's workflow makes it very easy to context switch between different feature branches.
- Free private repos905
- Simple setup398
- Nice ui and tools347
- Unlimited private repositories341
- Affordable git hosting240
- Integrates with many apis and services123
- Reliable uptime119
- Nice gui86
- Pull requests and code reviews84
- Very customisable58
- Mercurial repositories16
- SourceTree integration14
- JIRA integration11
- Track every commit to an issue in JIRA10
- Best free alternative to Github8
- Deployment hooks8
- Automatically share repositories with all your teammates7
- Compatible with Mac and Windows7
- Source Code Insight6
- Login with Google5
- Create a wiki5
- Approve pull request button5
- Customizable pipelines4
- #2 Atlassian Product after JIRA4
- Continuous Integration and Delivery3
- Unlimited Private Repos at no cost3
- Also supports Mercurial3
- Mercurial Support2
- Issues tracker2
- Open source friendly2
- Multilingual interface2
- Academic license program2
- IAM integration2
- Free Private Repositories0
- Not much community activity19
- Difficult to review prs because of confusing ui17
- Quite buggy14
- Managed by enterprise Java company10
- CI tool is not free of charge8
- Complexity with rights management7
- Only 5 collaborators for private repos6
- Slow performance4
- No AWS Codepipelines integration2
- No more Mercurial repositories1
- No server side git-hook support1
related Bitbucket posts
I use GitLab when building side-projects and MVPs. The interface and interactions are close enough to those of GitHub to prevent cognitive switching costs between professional and personal projects hosted on different services.
GitLab also provides a suite of tools including issue/project management, CI/CD with GitLab CI, and validation/landing pages with GitLab Pages. With everything in one place, on an #OpenSourceCloud GitLab makes it easy for me to manage much larger projects on my own, than would be possible with other solutions or tools.
It's petty I know, but I can also read the GitLab code diffs far more easily than diffs on GitHub or Bitbucket...they just look better in my opinion.
A bit difference in GitHub and GitLab though both are Version Control repository management services which provides key component in the software development workflow. A decision of choosing GitHub over GitLab is major leap extension from code management, to deployment and monitoring alongside looking beyond the code base hosting provided best fitted tools for developer communities.
- Authentication stages - With GitLab you can set and modify people’s permissions according to their role. In GitHub, you can decide if someone gets a read or write access to a repository.
- Built-In Continuous Integrations - GitLab offers its very own CI for free. No need to use an external CI service. And if you are already used to an external CI, you can obviously integrate with Jenkins, etc whereas GitHub offers various 3rd party integrations – such as Travis CI, CircleCI or Codeship – for running and testing your code. However, there’s no built-in CI solution at the moment.
- Import/Export Resources - GitLab offers detailed documentation on how to import your data from other vendors – such as GitHub, Bitbucket to GitLab. GitHub, on the other hand, does not offer such detailed documentation for the most common git repositories. However, GitHub offers to use GitHub Importer if you have your source code in Subversion, Mercurial, TFS and others.
Also when it comes to exporting data, GitLab seems to do a pretty solid job, offering you the ability to export your projects including the following data:
- Wiki and project repositories
- Project uploads
- The configuration including webhooks and services
- Issues with comments, merge requests with diffs and comments, labels, milestones, snippets, and other project entities.
GitHub, on the other hand, seems to be more restrictive when it comes to export features of existing GitHub repositories. * Integrations - #githubmarketplace gives you an essence to have multiple and competitive integrations whereas you will find less in the GitLab.
So go ahead with better understanding.
- Great for Enterprise level use3
related Perforce posts
- A lot easier to extend than git19
- Easy-to-grasp system with nice tools17
- Works on windows natively without cygwin nonsense13
- Written in python11
- Better than Git6
- Best GUI6
- Better than svn4
- Hg inc2
- Good user experience2
- TortoiseHg - Unified free gui for all platforms2
- Consistent UI2
- Native support to all platforms2
- Free to use1
- Track single upstream only0
- Does not distinguish between local and remote head0
related Mercurial posts
I've been excited about Git ever since it got a built-in UI. It's the perfect combination of a really solid, simple data model, which allows an experienced user to predict precisely what a Git subcommand will do, often without needing to read the documentation (see the slides linked from the attached article for details). Most important to me as the lead developer of a large open source project (Zulip) is that it makes it possible to build a really clean, clear development history that I regularly use to understand details of our code history that are critical to making correct changes.
And it performs really, really well. In 2014, I managed Dropbox's migration from Mercurial to Git. And just switching tools made just about every common operation (
git commit etc.) 2-10x faster than with Mercurial. It makes sense if you think about it, since Git was designed to perform well with Linux, one of the largest open source projects out there, but it was still a huge productivity increase that we got basically for free.
If you're learning Git, I highly recommend reading the other sections of Zulip's Git Guide; we get a lot of positive feedback from developers on it being a useful resource even for their projects unrelated to Zulip.
- Self hosted492
- Has community edition334
- Easy setup238
- Familiar interface238
- Includes many features, including ci131
- Nice UI107
- Good integration with gitlabci81
- Simple setup53
- Has an official mobile app33
- Free private repository31
- Continuous Integration27
- Open source, great ui (like github)19
- Slack Integration15
- Full CI flow11
- Free and unlimited private git repos9
- User, group, and project access management is simple8
- Built-in CI7
- All in one (Git, CI, Agile..)7
- Intuitive UI7
- Both public and private Repositories4
- Mattermost Chat client3
- Integrated Docker Registry3
- Issue system3
- One-click install through DigitalOcean2
- Because is the best remote host for git repositories2
- Full DevOps suite with Git2
- Free private repos2
- Great for team collaboration2
- Unlimited free repos & collaborators2
- It's fully integrated2
- I like the its runners and executors feature2
- So easy to use2
- It's powerful source code management tool2
- Build/pipeline definition alongside code2
- Security and Stable2
- Low maintenance cost due omnibus-deployment2
- Multilingual interface1
- Kubernetes integration with GitLab CI1
- Review Apps feature1
- Powerful software planning and maintaining tools1
- Groups of groups1
- Built-in Docker Registry1
- Not Microsoft Owned1
- Many private repo1
- Published IP list for whitelisting (gl-infra#434)1
- The dashboard with deployed environments1
- HipChat intergration1
- Kubernetes Integration1
- Native CI1
- Powerful Continuous Integration System1
- It includes everything I need, all packaged with docker1
- Supports Radius/Ldap & Browser Code Edits0
- Slow ui performance27
- Introduce breaking bugs every release7
- Insecure (no published IP list for whitelisting)5
- Built-in Docker Registry1
- Review Apps feature0
related GitLab posts
I have mixed feelings on GitHub as a product and our use of it for the Zulip open source project. On the one hand, I do feel that being on GitHub helps people discover Zulip, because we have enough stars (etc.) that we rank highly among projects on the platform. and there is a definite benefit for lowering barriers to contribution (which is important to us) that GitHub has such a dominant position in terms of what everyone has accounts with.
But even ignoring how one might feel about their new corporate owner (MicroSoft), in a lot of ways GitHub is a bad product for open source projects. Years after the "Dear GitHub" letter, there are still basic gaps in its issue tracker:
- You can't give someone permission to label/categorize issues without full write access to a project (including ability to merge things to master, post releases, etc.).
- You can't let anyone with a GitHub account self-assign issues to themselves.
- Many more similar issues.
It's embarrassing, because I've talked to GitHub product managers at various open source events about these things for 3 years, and they always agree the thing is important, but then nothing ever improves in the Issues product. Maybe the new management at MicroSoft will fix their product management situation, but if not, I imagine we'll eventually do the migration to GitLab.
We have a custom bot project, http://github.com/zulip/zulipbot, to deal with some of these issues where possible, and every other large project we talk to does the same thing, more or less.
We use GitLab CI because of the great native integration as a part of the GitLab framework and the linting-capabilities it offers. The visualization of complex pipelines and the embedding within the project overview made Gitlab CI even more convenient. We use it for all projects, all deployments and as a part of GitLab Pages.
While we initially used the Shell-executor, we quickly switched to the Docker-executor and use it exclusively now.
We formerly used Jenkins but preferred to handle everything within GitLab . Aside from the unification of our infrastructure another motivation was the "configuration-in-file"-approach, that Gitlab CI offered, while Jenkins support of this concept was very limited and users had to resort to using the webinterface. Since the file is included within the repository, it is also version controlled, which was a huge plus for us.
- Hardware level28
- Embedded apps18
- Performance of assembler9
- Great for embedded4
- Compiles quickly3
- No garbage collection to slow it down2
- No built in support for concurrency3
- Lack of type safety2
- No built in support for parallelism (e.g. map-reduce)2
related C lang posts
Why Uber developed H3, our open source grid system to make geospatial data visualization and exploration easier and more efficient:
We decided to create H3 to combine the benefits of a hexagonal global grid system with a hierarchical indexing system. A global grid system usually requires at least two things: a map projection and a grid laid on top of the map. For map projection, we chose to use gnomonic projections centered on icosahedron faces. This projects from Earth as a sphere to an icosahedron, a twenty-sided platonic solid. The H3 grid is constructed by laying out 122 base cells over the Earth, with ten cells per face. H3 supports sixteen resolutions: https://eng.uber.com/h3/
One important decision for delivering a platform independent solution with low memory footprint and minimal dependencies was the choice of the programming language. We considered a few from Python (there was already a reasonably large Python code base at Thumbtack), to Go (we were taking our first steps with it), and even Rust (too immature at the time).
We ended up writing it in C. It was easy to meet all requirements with only one external dependency for implementing the web server, clearly no challenges running it on any of the Linux distributions we were maintaining, and arguably the implementation with the smallest memory footprint given the choices above.