À propos de Git

Qu'on le veuille ou non,
Git, le système de gestion version initialement lancé par Linus Torvalds pour le développement du noyau, est aujourd'hui incontournable. De très nombreux projets y passent : le noyau évidemment, U-Boot (bootloader très populaire dans l'embarqué),
Buildroot (projet auquel je contribue de temps à autre), Gnome et bien d'autres.
Sauf que Git, même quand on est familier de CVS ou SVN, ce n'est quand même pas facile à aborder. Des concepts nouveaux, des centaines de commandes aux noms un peu obscurs. Franchement, ce n'est pas facile. D'ailleurs, d'autres outils du même type comme Mercurial proposaient dès le départ une interface utilisateur plus conviviale et compréhensible que celle de Git, mais clairement, Git semble avoir gagné la bataille des outils de gestion de version distribuée. Est-ce dû à une véritable supériorité technique, ou à l'aura de son initiateur, Linus Torvalds ? Je serai tenté de dire que cette dernière raison a probablement eu une influence significative dans le succès de Git, mais je ne suis sans doute pas assez expert pour juger des finesses techniques respectives de Git et de Mercurial.
Sur Git, il y a maintenant
pléthore de documentation. Le
tutorial est un bon point de départ. Ces documentations sont faciles à trouver, mais d'autres le sont moins, et sont pourtant intéressantes :
- Deux billets de Federico Mena-Quintero, le premier et le deuxième. Ces deux billets expliquent drôlement bien ce qui se passe au sein d'un dépôt Git lorsqu'on committe ou qu'on merge des branches. En effet, un des points qui m'a donné le plus de fil à retordre lors du passage à Git, c'est la non-linéarité de l'historique. Avec Subversion, on est habité à un historique plutôt linéaire (la révision 12345 est avant la révision 12346). Avec Git, on passe à un graphe de commits, plus compliqué à comprendre.
- Git Casts contient une dizaine de screencasts expliquant progressivement comment utiliser Git. Plutôt sympathique à regarder, mais je dirai qu'il faut déjà avoir quelques notions basiques de Git (style le tutorial) pour pouvoir vraiment comprendre ces screencasts.
- Enfin, The Thing About Git explique un point particulièrement puissant de Git : la possibilité de committer sélectivement des bouts de fichiers. Supposons que vous avez travaillé sur différents trucs dans votre copie de travail, et que vous voulez maintenant committer ces différents trucs en plusieurs commits, car ils ne sont pas vraiment liés entre eux. Avec des outils de gestion de version classique style Subversion, on se retrouve à sauvegarder le patch, l'éditer à la main, bref bricoler. Avec Git, on a git add --patch qui est véritablement merveilleux : il permet de sélectionner chunk par chunk quel morceau du patch on souhaite committer. Ça et git rebase --interactive, c'est vraiment des outils très puissants.