Squashing des Commits Git : Le Chemin du Développeur vers un Historique Propre

En tant que développeur, vous est-il déjà arrivé de vous retrouver avec un historique de commits en désordre, rempli de nombreux petits commits incrémentaux ? Cela peut rendre l’historique de votre projet difficile à naviguer et à comprendre. Heureusement, Git fournit une technique puissante appelée ""squashing"" qui vous permet de combiner plusieurs commits en un seul commit cohérent. Dans cet article, nous explorerons ce qu’est git squash, ses avantages et comment vous pouvez l’utiliser efficacement pour maintenir un historique de commits propre et lisible.
Points Clés
- Git squash combine plusieurs commits en un seul commit, résultant en un historique de projet plus propre.
- Le squashing est bénéfique pour les revues de code, la réversion des changements et la lisibilité globale.
- Vous pouvez squasher des commits en utilisant le rebase interactif (
git rebase -i
) ou l’option--squash
lors du merge. - Suivez les bonnes pratiques, comme squasher les changements liés, écrire des messages de commit clairs et communiquer avec votre équipe.
Qu’est-ce que Git Squash ?
Git squash est le processus qui consiste à prendre une série de commits et à les condenser en un seul commit. C’est particulièrement utile lorsque vous avez une branche de fonctionnalité avec de nombreux petits commits qui encombrent l’historique. En squashant ces commits, vous pouvez présenter un historique plus rationalisé et plus poli à vos collaborateurs.
Pourquoi Squasher les Commits ?
Il y a plusieurs raisons pour lesquelles vous pourriez vouloir squasher les commits dans Git :
-
Historique plus propre : Le squashing vous permet de créer un historique de commits plus propre et plus lisible en combinant les changements liés en un seul commit.
-
Revue de code plus facile : Lorsque vous squashez les commits avant de merger une branche de fonctionnalité, les relecteurs peuvent se concentrer sur le changement global plutôt que de passer au crible de nombreux petits commits.
-
Réversion des changements : Si vous devez annuler une fonctionnalité, il est beaucoup plus simple de revenir sur un seul commit squashé plutôt que sur plusieurs commits individuels.
Comment Squasher les Commits dans Git
Il existe deux façons principales de squasher les commits dans Git : en utilisant le rebase interactif ou l’option --squash
lors du merge.
Rebase Interactif
Pour squasher les commits en utilisant le rebase interactif, suivez ces étapes :
-
Exécutez
git rebase -i HEAD~N
, oùN
est le nombre de commits que vous voulez squasher. Par exemple,git rebase -i HEAD~3
ciblera les trois derniers commits. -
Dans l’éditeur de rebase interactif, changez le mot
pick
ensquash
(ous
) pour les commits que vous voulez squasher. Laissez le premier commit commepick
. -
Enregistrez et fermez l’éditeur. Git ouvrira un autre éditeur vous demandant le message de commit pour le commit squashé.
-
Entrez le message de commit souhaité, enregistrez et fermez l’éditeur. Les commits sélectionnés seront squashés en un seul commit.
Merge avec —squash
Pour squasher les commits lors du merge d’une branche, utilisez l’option --squash
:
-
Assurez-vous d’être sur la branche dans laquelle vous voulez merger (par exemple,
main
oudevelop
). -
Exécutez
git merge --squash <branch-name>
, en remplaçant<branch-name>
par le nom de la branche que vous voulez merger. -
Git combinera tous les changements de la branche source en un seul commit dans votre branche actuelle.
-
Utilisez
git commit
pour créer un nouveau commit avec les changements squashés.
Bonnes Pratiques pour Squasher les Commits
Lorsque vous squashez des commits, gardez ces bonnes pratiques à l’esprit :
-
Squashez les changements liés : Ne squashez que les commits qui sont liés et forment une unité de travail logique.
-
Écrivez des messages de commit clairs : Fournissez un message de commit clair et descriptif pour le commit squashé afin de refléter le changement global.
-
Évitez de squasher les commits publics : Ne squashez pas les commits qui ont déjà été poussés vers un dépôt public, car cela peut créer de la confusion pour les autres collaborateurs.
-
Communiquez avec votre équipe : Assurez-vous que votre équipe est au courant de vos pratiques de squashing pour maintenir la cohérence et éviter les conflits.
Conclusion
Squasher les commits dans Git est une technique précieuse pour maintenir un historique de commits propre et organisé. En combinant les commits liés en un seul commit significatif, vous pouvez améliorer la lisibilité et la gestion de votre projet. Que vous utilisiez le rebase interactif ou l’option --squash
lors du merge, le squashing des commits vous aide à présenter un historique poli et cohérent à vos collaborateurs. N’oubliez pas de suivre les bonnes pratiques et de communiquer avec votre équipe pour assurer un flux de travail fluide et efficace.
FAQ
Il n'est généralement pas recommandé de squasher des commits qui ont été poussés vers un dépôt public, car cela peut créer de la confusion pour les autres collaborateurs. Le squashing est mieux fait sur des branches locales ou privées avant le merge.
Si des conflits surviennent pendant le processus de squashing, vous devrez les résoudre manuellement. Git vous guidera à travers le processus de résolution des conflits, et vous pourrez utiliser des outils comme `git mergetool` pour vous aider.
Oui, vous pouvez utiliser l'option `--dry-run` avec `git rebase -i` pour voir à quoi ressemblerait le commit squashé sans réellement effectuer le squash. Cela vous permet de revoir les changements et d'apporter les ajustements nécessaires.