Git permet de faire un squash de plusieurs commits. Le but du squash est de transformer plusieurs commits en un seul. L’arbre des commits sous GIT est ainsi épuré et la relecture de la pull request est facilitée.
Je vais vous expliquer pas à pas comment faire un squash de commits avec Jetbrains, fonctionne aussi bien avec Intellij que PhpStorm.
Comme vous pouvez le constater sur cette capture, j’ai commité et pushé 5 commits.
Pour avoir accès à cette liste de commit, il vous suffit de cliquer sur Version Control, puis sur l’onglet Log.
Sous Bitbucket nous retrouvons bien notre liste de commit qui ont été pushé
Sous IntelliJ, dans la liste des commits (onglet Version Control, puis Log), faite un clic droit sur le premier commit, commit1 dans mon exemple.
Sélectionner l’option Interractively Rebase from Here…
Une nouvelle popin va s’ouvrir comme le montre la capture suivante
Sélectionner tous les commits suivant le premier. Vous pouvez utiliser la commande Shift pour faire une sélection multiple.
Une fois la liste des commits sélectionnés, faites un clic droit sur un des commits sélectionnés pour ouvrir les options.
Pour sélectionner l’option squash
Il ne vous reste plus qu ‘à cliquer que Start Rebasing
InteliJ va ensuite ouvrir une nouvelle popin qui va contenir la liste des commentaires de tous les commits squashés. Vous pouvez bien entendu changer le message.
Cliquer ensuite sur Resume Rebasing
Il ne vous reste plus qu’à pusher votre unique commit, via un Ctrl + Shift + K, et faire un Force Push.
Si vous faites seulement un push, InteliJ risque de vous demander de faire des merges et de rebase en boucle
Dans les logs de IntelliJ, nous avons plus qu’un commit avec le message de commit que l’on a changé. Il en est de même sous Bitbucket.