Mon Git flow personnel

Avec les années et les projets, j’ai affiné une manière de bosser avec Git qui me simplifie la vie.

Elle n’est probablement pas parfaite. Mais elle marche parfaitement pour moi, et elle évite pas mal de galères à mes collègues moins à l’aise avec Git. Du coup je la partage ici, en espérant que ça puisse servir.

La base

Je pars toujours de la branche main. Je crée une branche de feature avec un nom clair :

git checkout -b feat/ma-feature

Un seul commit

Je fais un seul commit par branche. Avec un message clair et explicite.

Si j’ai besoin de corriger un truc (oubli, feedback de PR, etc.), je ne crée pas un deuxième commit. J’amende celui existant :

git add .
git commit --amend --no-edit

Et je force le push

Puis je force push, pour que l’historique reste propre et linéaire :

git push -f

Toujours rebase, jamais merge

Si entre-temps main a avancé, je ne merge jamais. Je rebase ma branche dessus :

git fetch origin
git rebase origin/main

Pourquoi pas de merge ? Parce que :

  • ça évite les commits "Merge branch 'main' into…" qui polluent l’historique

  • ça rend l’historique linéaire et beaucoup plus lisible

  • ça réduit drastiquement les conflits de dernière minute

Résultat

  • Une branche = un commit = un diff clair

  • L’historique reste simple et maîtrisé

  • Les PRs se lisent facilement et se mergent vite

  • Les conflits sont anticipés et isolés

En résumé

Je ne dis pas que c’est la méthode parfaite. Mais elle fonctionne très bien pour moi depuis des années, et elle a fait ses preuves sur pas mal de projets.

Si vous galèrez souvent avec des conflits ou des historiques Git incompréhensibles, ça vaut peut-être le coup d’essayer.