Jumping on the Git Bandwagon

[Git](http://git.or.cz/) is a [distributed version control](http://en.wikipedia.org/wiki/Distributed_revision_control) system (DVCS); it was initially written by [Linus Torvalds](http://fr.wikipedia.org/wiki/Linus_Torvalds) to support the development of the Linux kernel and as a replacement for [BitKeeper](http://en.wikipedia.org/wiki/BitKeeper).

Last year, Linus gave an incentive talk at Google about Git, and criticized quite vigorously the old model of centralized version control system (such as CVS and Subversion).

Git is not the first free distributed version control system available. Actually, I’ve tried most of them (e.g., [GNU Arch](http://www.gnu.org/software/gnu-arch/), [Darcs](http://darcs.net/), [Monotone](http://www.monotone.ca/)) but because of the lack of community and maturity, I’ve decided to stick to Subversion and wait for one of them to stand out of the crowd.

Git has become incredibly popular lately and major open source projects (such as [Ruby on Rails](http://weblog.rubyonrails.org/2008/4/2/rails-is-moving-from-svn-to-git)) have started to move from Subversion to Git.

DVCS use a different paradigm which is particularly well suited to open source development (where teams are virtual and physically distributed) but Git also solves problems you probably have on smaller projects, such as working offline (or on different sites), branch management, difficult merges, [tangled working copy](http://tomayko.com/writings/the-thing-about-git) issues.

If you’re serious about source control, and you often find yourself fighting against you source control system, because “you should have” done things differently from the start, then you should seriously consider looking at Git; it is more flexible and less intrusive than most systems available.

### GitHub

[GitHub](http://github.com/) is a Git repository hosting service that [just launched](http://github.com/blog/40-we-launched); but it’s more than that, it’s a [social network for programmers.](http://www.readwriteweb.com/archives/github_a_social_network_for_programmers.php)

On GitHub, you can follow people, watch projects, browse source code, fork projects, [comments on commits](http://github.com/blog/42-commit-comments), [visualize the changes](http://github.com/blog/39-say-hello-to-the-network-graph-visualizer) of a project or [integrate](http://github.com/blog/41-service-integration) with other services. GitHub is the most innovative service of that kind I’ve seen so far and it’s definitely what SourceForge should have been.

GitHub services [comes with a subscription](http://github.com/plans) but you can get a small plan for free. It’s already the place of choice for hosting some [popular](http://github.com/rails/rails/tree/master) open source projects; so it’s definitely a service worth looking at.

### Conclusions

Git might be the outsider I was looking for, and because is it supported by Linus Torvalds, the Linux Kernel team and other major projects it has good chances to become mainstream among developers.

I’ve compiled some references you might find interesting to read and watch. After that, maybe you’ll find yourself jumping on the Git bandwagon.

* [Git Tech Talk](http://video.google.com/videoplay?docid=-3999952944619245780) by Randal Schwartz
* [The Thing about Git](http://tomayko.com/writings/the-thing-about-git) by Ryan Tomayko
* [Git Screencast](http://peepcode.com/products/git) peepcode.com
* [Git Magic](http://www-cs-students.stanford.edu/~blynn/gitmagic/) a guide by Ben Lynn
* [Git SVN Workflow](http://andy.delcambre.com/2008/3/4/git-svn-workflow) by Andy Delcambre
* [SVN Crash Course](http://git.or.cz/course/svn.html) by the Git team