Comment fusionner vos commits avec le Squash sur GitLab

Guide sur le Squashing de commits pour transformer vos brouillons en modifications professionnelles avant la fusion sur GitLab.

Le Squashing de commits sur GitLab : Nettoyer son historique

C'est quoi le Squashing et pourquoi l'utiliser ?

Au cours du développement d'une fonctionnalité, il est normal de faire plusieurs petits enregistrements (commits). Parfois, ces commits servent juste à corriger une petite faute de frappe ou à faire un test rapide. Si vous envoyez tout cela tel quel sur la plateforme, l'historique du projet GitLab va devenir très long et difficile à lire pour vos collègues.

Le Squashing de commits (ou écrasement) est une technique qui permet de fusionner plusieurs commits en un seul. Imaginez que vous écrivez un rapport : vous faites dix brouillons avec des ratures partout. Avant de le rendre à votre responsable, vous regroupez tout en une seule version propre. Pour Git, c'est la même chose : on transforme une série de petits changements brouillons en une modification propre et professionnelle.

Préparer le terrain pour le Squash

Pour pratiquer, nous allons créer une situation où nous avons plusieurs commits inutiles à regrouper au sein de votre dépôt.

Création d'une branche de travail

Créez une branche nommée squash-chapter pour faire vos tests de fusion :

git switch -c squash-chapter

Faire plusieurs petits commits

Nous allons créer un fichier et effectuer deux modifications séparées pour simuler un historique chargé :

echo "Ligne 1" > mon_code.txt
git add mon_code.txt
git commit -m "Premier ajout"

echo "Ligne 2" >> mon_code.txt
git add mon_code.txt
git commit -m "Deuxième ajout avec une correction"

Si vous regardez votre historique avec la commande git log --oneline, vous verrez deux lignes. L'objectif est de simplifier l'historique Git pour n'en avoir plus qu'une seule.

Réaliser le Squashing avec le Rebase Interactif

Pour fusionner ces commits, nous allons utiliser une variante puissante du rebase : le mode interactif de Git.

Lancer la commande de fusion

Nous voulons regrouper les 2 derniers commits. Tapez la commande suivante dans votre terminal :

git rebase -i HEAD~2

Note technique : Le symbole ~2 indique à Git de remonter de deux crans dans l'historique. Si vous aviez 5 commits à regrouper, vous utiliseriez ~5.

Utiliser l'éditeur de texte (Vim ou Nano)

Un éditeur de texte s'ouvre alors. Vous verrez vos deux commits précédés du mot pick.

Interface de l'éditeur :

pick a1b2c3d Premier ajout
pick e4f5g6h Deuxième ajout avec une correction

# Rebase ...
# Commands:
# p, pick = use commit
# s, squash = use commit, but meld into previous commit

Pour fusionner les commits, vous devez remplacer le mot pick de la deuxième ligne par squash (ou juste la lettre s). Cela signifie littéralement : "Prends ce commit et écrase-le dans le précédent".

Sauvegardez et quittez (sur Vim, appuyez sur Echap, tapez :wq puis Entrée). Git vous demandera ensuite de rédiger un message de commit final pour l'ensemble.

Envoyer le résultat sur GitLab

Puisque vous avez réécrit l'histoire de votre branche, un simple push classique sera systématiquement refusé par le serveur.

Le push forcé (Force Push)

Si le serveur refuse l'envoi, vous devrez utiliser l'option --force. Attention, c'est une commande à utiliser avec prudence et uniquement sur vos propres branches de travail :

git push origin squash-chapter --force

Conclusion

Le Squashing est une excellente habitude à prendre avant de soumettre une Merge Request sur GitLab. Cela prouve que vous êtes un développeur organisé qui accorde de l'importance à la propreté du code source.

Maintenant que vous gérez votre code comme un pro, il est temps d'apprendre à gérer les accès. Dans le chapitre suivant, nous verrons comment ajouter des utilisateurs à un projet GitLab pour collaborer efficacement.

Espace commentaire

Écrire un commentaire

Vous devez être connecté pour poster un message !

15 commentaires

23/04/26

Squashing de commits c'est la base pour un bon historique. Merci pour le guide

23/04/26

Nettoyer son historique avec le Squashing, c'est un gain de temps énorme en revue de code

23/04/26

C'est quoi le Squashing et pourquoi l'utiliser ? Excellente intro

Membre
23/04/26

La partie faire plusieurs petits commits est réaliste. Personne ne fait un commit parfait du premier coup

C'est là que le squash devient une bénédiction pour présenter un travail propre

Membre
23/04/26

Le Rebase Interactif pour le Squashing est une puissance sous-estimée. Bien de le mettre en avant

Membre
23/04/26

Utiliser l'éditeur de texte (Vim ou Nano) est bien expliqué. Ça démystifie la commande

Beaucoup hésitent à cause de l'interface console, mais là c'est clair comment pick/squash

23/04/26

Le push forcé (Force Push), le point sensible. Le rappel sur les précautions est important

23/04/26

Transformer des brouillons en modifications professionnelles. C'est ça l'objectif

23/04/26

Préparer le terrain pour le Squash avec la création d'une branche de travail, bonne pratique

j'ai partagé ça avec les juniors. ils avaient besoin de ce rappel pour des commits propres

23/04/26

Le guide sur le Squashing de commits est précis. On l'applique au quotidien

Ça nous permet de garder un historique linéaire et facile à comprendre lors des rollbacks

23/04/26

Lancer la commande de fusion pour le squash. Les étapes sont claires

Membre
23/04/26

nettoyer son historique, un gain de temps pour l'intégration continue

Membre
23/04/26

Merci pour le tuto. Indispensable pour notre pipeline de dev

Membre
23/04/26

Le paragraphe sur le push forcé est crucial. C'est le point chaud à surveiller

On a déjà eu des soucis de perte de travail en oubliant la prudence avec force-push

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire