Tu bosses en solo ou en petite Ă©quipe, et câest Ă chaque fois la panique avec tes repos. Dans cet article, je reviens sur un flow simple, structurĂ© et largement Ă©prouvĂ©, qui va te sortir Ă coup sĂ»r du Nether.
Baaah alors, mon lapinou...
Tâarrives pas Ă dĂ©passer ta gitophobie, hooooooooo... Tu nous fais un civet Ă chaque fois que tu vas pousser un commit ? Câest malheureux... đ„č
Bon, ça tombe bien, je vais te proposer dans cet article une bonne recette pour que tu tâaccroches Ă des branches solides.
đš ALERTE đš
Tu ne trouveras pas ici les commandes qui feront de toi un Git Guru, ce nâest pas le sujet. Ici, on parle seulement dâorganisation.
Ce billet décrit une version ultra simplifée de Git Flow et n'en garde seulement que l'essentiel main
, develop
et des branches de features. GitFlow est parfois critiqué pour sa complexité sur les projets avec des releases fréquentes (ex : les apps mobiles). Ce workflow simplifié évite ces écueils.
Un workflow qui marche
Il existe une mĂ©thode simple pour structurer tes branches sans te prendre la tĂȘte. Pas de Git Flow compliquĂ©, pas de rĂšgles incomprĂ©hensibles. Juste un workflow efficace, mĂȘme quand ton projet ressemble Ă un plat de spaghettis.
La structure
main
âââ develop
âââ feat/payment-form
âââ feat/ui-components
âââ feat/github-workflows
Branche | RĂŽle | RĂšgles dâor |
---|---|---|
main |
Production (toujours stable). | â
Jamais de commit direct. Seulement des merges depuis develop . |
develop |
IntĂ©gration (pour les features terminĂ©es). | â
Toujours Ă jour avec main . â
Testée avant merge. |
feat/* |
FonctionnalitĂ©s distinctes. | â
Créées depuis develop . â
Noms clairs : feat/login , fix/login-button , docs/specs . |
Le principe
Je vais faire une analogie pour tâexpliquer le principe avec des mots simples. Fais preuve dâun peu dâimagination : notre repo est un restaurant !
[đœïž Salle = main
] â [đș Comptoir = develop
] â [đšâđł Cuisine = feat/fix/docs
]
main
: câest la salle ou la terrasse !
Câest lĂ oĂč se trouve le client. Câest toujours nickel-propre ! Tout sây passe bien, tout est fonctionnel. Pas question dây montrer quoi que ce soit de bancal, Ă moins de vouloir perdre des âïž. Ici, il en va de la rĂ©putation de la maison !
develop
: câest le comptoir !
Câest ici que passent tous les plats qui vont ĂȘtre servis au client (ou pas). Parce quâil y a toujours le boss đĄ de prĂ©sent, aux aguets, et il ne laisse rien passer :
- Est-ce que câest bon et goĂ»tu ?
- Est-ce que câest conforme Ă la demande du client ?
- Est-ce que ça sâintĂšgre bien dans la carte ?
- Est-ce que ça répond au standing de la maison ?
- Est-ce quâon ne sert pas le dessert avant lâentrĂ©e ?
- Blablabla... toujours lĂ pour tâemmerder, lâpatron, pffff.
feat/...
, fix/...
, etc.
: câest la cuisine !
- On y prépare des recettes présentes à la carte.
- On essaie des nouveaux trucs, des expériences culinaires qui parfois marchent et parfois non.
- On améliore les recettes, on change des ingrédients.
- Câest dans ces branches-lĂ quâon fait les foufous et quâon se lĂąche !
- Une rĂšgle dâor : on ne mĂ©lange pas les torchons et les serviettes, une branche par recette !
Un exemple simple
On est un petit pool de trois devs. On bosse sur un SaaS de ouf qui va révolutionner le truc.
- Moi, je bosse sur les composants UI.
- Daphnée, sur le workflow.
- Et toi, sur le formulaire de paiement.
main
âââ develop
âââ feat/ui-components <-- Moi
âââ feat/github-workflows <-- DaphnĂ©e (j'la kif đ)
âââ feat/payment-form <-- Toi
De mon cÎté
- Je viens de finaliser ma lib UI sur ma branche
feat/ui-components
. - Tous mes tests sont au vert.
- Jâai bien documentĂ© mon taf.
- Je fais une Pull Request vers
develop
. - Mon code passe en revue (le fameux boss đĄ), tout est OK !
- Ma branche est mergée sur
develop
. - Je supprime ma branche
feat/ui-components
et je passe Ă autre chose.
ParallÚlement, de ton cÎté
- Tu bosses tranquillement sur ton formulaire sur ta branche
feat/payment-form
. - Lorsque la mienne est mergée sur
develop
, tu rebasedevelop
. Tu bĂ©nĂ©ficies ainsi de la lib UI sans rien perdre de ton taf. Magique ! đȘ - Tu finalises ton formulaire.
- Tu fais une Pull Request vers
develop
. - Ton code passe en revue, tout est OK !
- Ta branche est mergée sur
develop
. - Tu supprimes ta branche
feat/payment-form
et tu passes Ă autre chose.
La suite
- DaphnĂ©e nâa pas fini son taf, mais ça nâa pas beaucoup dâimpact sur la suite.
-
develop
est mergée surmain
. - Daphnée rebase
develop
et poursuit son taf.
Attention : Un rebase
est puissant mais réécrit lâhistorique : utilise-le seulement si tu es seul·e sur ta branche ! Si vous travaillez Ă plusieurs sur une branche, privilĂ©gie le merge
pour éviter les conflits.
Pour ceux qui veulent aller plus loin : Ressources francophones :
- Vidéos :
- GitFlow expliqué en 10 minutes par Grafikart
- Documentation officielle de GitFlow (en français) :
- Livre gratuit :
- Pro Git de Scott Chacon (chapitre sur les branching models, dont GitFlow).
- Article court et pratique :
- GitFlow : Un workflow Git pour les équipes (Atlassian, en français).
En conclusion
Ce workflow simple tâĂ©viteras bien des dĂ©convenues !
Alors, bien sĂ»r, il y a des edge cases, mais dans ce billet, je voulais surtout te parler de mĂ©thodologie et de principe. Si tâas un souci prĂ©cis, nâhĂ©site pas Ă mâappeler đ€Ł.
Mon conseil : mĂȘme si tu bosses seul, expĂ©rimente une ou deux fois cette approche. Promis, ça va te paraĂźtre lumineux !
Je viens de me relire, je dois avoir la dalle, je parle que de bouffe !
AprÚs coup, je me dis qu'un lapinou qui s'accroche aux branches, ça commence furieusement à ressembler à un écurou (putain, c'est Pokémon ce blog !)
Top comments (0)