Git Workflow

Voir la vidéo

Git est un formidable outil qui a permis de rendre le versioning populaire (et autant dire que ce n'était pas gagné...). Mais il est parfois difficile, surtout au début, de comprendre comment bien organiser son dépôt. Entre les branches, les tags et les commits on se retrouve vite un peu perdu.

On s'accroche aux branches

Image issue du super article d'Atlasian

Je ne parle pas ici des branches juste pour caser mon jeu de mot bien pourri. Les branches constituent la pierre angulaire d'un bon Workflow sur Git.
Lorsque l'on commence un nouveau projet on se retrouve sur un branch master. Cette branche servira à la version production de notre projet. On va donc souvent commencer par créer une nouvelle branche servant au développement (on peut la nommer dev ou utiliser un numéro de version).

git branch dev
# On se rend alors sur notre nouvelle branche
git checkout dev

Mais même sur cette branche on ne commitera jamais nos modification on créera systématiquement une nouvelle branche pour chaque feature que l'on va rajouter à notre projet

# Je vais travailler sur ma homepage
git branch dev-homepage
git checkout dev-homepage

Et là vous pouvez vous en donner à cœur joie et enchainer les commits. Une fois que vous êtes satisfait de votre travail vous pouvez fusionner votre branche de feature avec la branche de développement

# On passe sur la branche de travail
git checkout dev
# On fusionne la branche de la feature
git merge dev-homepage

Et ainsi de suite, on crée une branche pour la feature que l'on souhaite développer, on travaille dessus, on fusionne à la fin. Si vous le souhaitez vous pouvez vous concerter avec les autres développeurs avant de gérer la fusion en question (ça peut être l'occasion de se faire une réunion autour de la machine à café, et parler merge avec george clooney).

Pourquoi une branch par feature ?

Alors là je vous vois venir, pourquoi s'emmerder à créer des branches tout le temps ? Il y a plusieurs avantage avec cette méthode de travaille :

  • A plusieurs ça évite d'avoir des conflits tous les 3 commits. Chacun travaillant sur sa branche les conflits ne vont avoir lieux que lors des fusions. Moins de conflit = Moins de perte de temps.
  • En un coup d'oeil on peut voir sur quoi les différents intervenant travail
  • On évite les commits affectant bcp de modules

En un coup d'oeil on comprend l'historique

Publié
Technologies utilisées
Auteur :
Grafikart
Partager