Une fois n’est pas coutume, ce ne sera pas un billet sur Drupal, mais sur le système de versionning du nom de Git. Et pour une fois (c’est vraiment pas un billet comme d’habitude) pas de code ou d’explication de ma part, mais plutôt une liste de ressources pour une prise en mains de cet outil en douceur. Il est vrai qu’en ce moment on en parle pas mal dans la communauté Drupal et notamment parce que les différents projets sont en cours de migration de Cvs vers Git.
Git, c’est quoi ?
Lorsqu’on travaille à plusieurs sur un même projet on est vite confrontés à un problème majeur, comment sauvegarder le travail de chacun surtout lorsque des fichiers en communs sont modifiés? Afin de répondre à cette problématique des outils de gestion de versions tel que Git, Cvs, Svn ou encore Bazaar on été crées. Quel que soit le logiciel, le principe est le même, c’est à dire, sauvegarder les fichiers et leurs modifications sur un serveur tout en conservant la chronologie des actions effectuées (+ d’infos). Git, Bazaar et Mercurial se valent globalement car ils sont récents et puissants avec chacun leurs avantages et inconvénients (histoire de les différencier), mais ce n’est plus le cas de Cvs qui est maintenant vieillissant.
Pourquoi Git ?
A l’heure d’aujourd’hui je n’ai pas encore eu beaucoup l’occasion de jouer avec, mais du peu que j’ai vu et des échos passionnés que j’ai entendu (n’est ce pas Yann et Charles-henri), Git à quelques avantages appréciables. Je ne compte pas faire ici une comparaison avec les autres systèmes de versionning mais voici quelques-unes de ses forces.
- Une bonne gestion de branche, il devient ainsi facile de faire une branche pour tester un bout de code.
- La fusion des fichiers est bien mieux gérée qu’avec svn par exemple.
- Git offre la possibilité de commiter sur un projet sans être connecté au serveur.
- Il est rapide et puissant.
- Git surveille le contenu et non les fichiers, c’est à dire que le système est capable de savoir qu’une fonction à été déplacée d’un fichier à un autre.
Notez aussi qu’il existe des plate-formes collaboratives Git (GitHub et Gitorious) sur lesquelles vous allez pouvoir créer et gérer vos projets sans avoir à installer un quelconque serveur.
Comprendre et utiliser Git
Il y a suffisamment de docs sur le sujet maintenant, alors pas besoin d’en faire une de plus, du coup j’ai choisi de vous lister les meilleurs articles, guides et autres tutos que j’ai trouvés et que l’on ma gentiement indiqué lors de mon ascension Git :
- La page wikipédia du projet
- Le guide de référence pour prendre en mains Git
- La version web gratuite du livre Pro Git
- Gérez vos codes source avec Git avec le site du zéro
- La présentation de Julien Dubois lors du DrupalCamp Nantes
- Les ressources Fr :
- Un bon tutoriel pour comprendre Git
- Présentation complète de Git en 101
- Les ressources En :
Quelques commandes à retenir
Comme pour chaque outils il existe toujours un tas de commande, voici certainement les plus populaires :
git init – initialiser un nouveau dépôt
git add – ajouter un nouveau fichier à l’index du projet pour qu’il soit pris en compte dans le versionning
git commit – valider les modifications.
git pull – pour télécharger les nouveautés depuis le serveur
git push – pour envoyer vos modifications sur le serveur
git status – pour connaître toutes les modifications qui n’ont pas encore été validées
git branch – crée une nouvelle branche de développement.
git merge – fusionne plusieurs branches de développement.
git revert – pour annuler des modifications et revenir à une certaine version.
git diff – voir ce qui a changé sur un fichier depuis une certaine version
J’espère qu’avec ces ressources Git n’aura plus de secret pour vous maintenant! Si vous trouvez des articles qui ont leur place dans cette liste n’hésitez pas à me le faire savoir.






Deux commandes mériteraient de se glisser dans ton billet :
git checkout et git reset.
git checkout permet de faire deux actions : annuler les modifications faites sur une fichier et retourner à un ID de commit précis (par exemple le commit qui représente la version 2.x-1.0 de mon module).
git reset quant à elle permet d’annuler toutes les modifications faites sur des fichiers (pour annuler des modifications qui n’ont pas été commitées).
Ces deux commandes sont très utiles, je m’en sert presque tous les jours !
Merci pour ton post.
Tu n’es effectivement pas le premier qui dit du bien de GIT !
Nous avons l’habitude d’utiliser SVN pour l’ensemble de nos projets mais il nous pose pas mal de problèmes que GIT pourrait résoudre (comme tu l’as très bien dit, la gestion des branches et du contenu entre autres…).
La question que l’on se pose encore c’est si cela vaut le coup de migrer sur GIT, quand d’autres outils opensource restent sur SVN ?
Ta question sur le changement est valable pour n’importe quelle techno, je crois qu’il y a un jour ou il faut se lancer et miser sur de nouvelles choses. Après rien ne vous oblige de passer d’un coup tout vos projets vers Git. Vous pouvez par exemple tester votre prochain projet ?
Il y a aussi des projets très intéressant et pas des moindres qui sont sur Git : Git lui même, Linux Kernel, Perl, Eclipse, Gnome, KDE, Ruby on Rails, Android, PostgreSQL et plein d’autres.
Finalement, il n’y a plus qu’à tester
Ouep, je pense que d’ici quelques semaines testera ça !
Je suis en train découvrir ce logiciel, et pour l’instant je l’utilise en local.
Je trouve cela génial de pourvoir travailler sur des bouts de codes sans toucher à la version stable.
Sur des projets en Drupal et en Flex, çà marche vraiment bien, il suffit pour cela de correctement configurer le gitignore.
Je connaissais git de nom mais j’ai toujours eu un penchant pour svn, dont la fonction merge laisse parfois à désirer. Merci pour ce post qui m’a forcé à m’y mettre, je ne regrette pas la transition en cours.