I don’t think there’s a single developer who doesn’t know GitHub, the popular source-control web hosting service for Git. If I’m wrong and you never head about it I strongly suggest you to fill this huge gap by reading (at least) the GitHub and Git wikipedia pages. Taking a look to the github.com and git-scm.com official site won’t hurt either.
If you know what I’m talking about, keep reading: you’re most certainly aware that in order to use the GitHub service you need to adopt Git, which is not only the most used source-control manager (SCM from now on) of the current decade, yet also a very brilliant and innovative piece of work due to its distribuited, versatile and elegant approach. These – togheter with the GitHub project itself- are the reasons why it gradually crushed the competitors, including some very praised open-source industry standards such as CVS and SVN – which were based on a traditional, less-modern centralized SCM paradigm.
While Git is widely adopted by either Windows and Linux developer communities, the latter certainly is its true love source – after all it was developed by a certain Linus Torvalds. Conversely, it’s still slightly less popular between Windows users for the following reasons:
- a late win32 porting of the most used UI – msysgit e TortoiseGit among others – which tend to be preferred by most Windows developers who tend to despise a bare command-line interface.
- the almost-simultaneos diffusion of Mercurial (formerly HG), another distribuited SCM featuring tools and settings as neat as Git ones, with a generally better support for Windows platforms, software and developer frameworks.
Another strong reason which favored Mercurial over Git on windows platforms was, in 2008, the launch of the bitbucket.org website, entirely based on Mercurial (until 2011, when Git was adopted too) and very similar to GitHub in almost any way.
I don’t want to go further than that, let alone saying which SCM would be better and why: in my personal opinion, being an enthusiast of both Git and Mercurial, I think that they are two amazing products which – despite their slightly different architectural approach – are equally able to perfectly fullfill almost any modern developing scenario. To put it in other words, I don’t think I ever missed one of them while working with the other one.
If you’re looking for a deeper analysis of the similarities and the differences between Git e Mercurial I strongly suggest you to start by reading these two excellent (despite their age) posts. The first one is practical, technical and analytic, whilst the latter is more theoretical and fun: just pick the one you feel most suited for your style, just like you’ll often end up choosing your SCM.