Git: Squash des commits avec VSCode et l’extension GIT graph

Logo Git

Git permet de faire un squash de plusieurs commits. Le but du squash est de fusionner plusieurs commits pour n’en créer qu’un seul. L’arbre des commits sous GIT est ainsi épuré et la relecture de la pull-request est facilitée.
Le squash des commits peut être fait en ligne de commandes, mais dans le cas présent je vais vous expliquer pas à pas comment faire un squash de commits avec VSCode (Visual Studio Code) et l’extension Git graph.

——————————————————————-

Cette extension, Git graph, affiche une webview VSCode avec une vue graph des branches Git de votre répertoire. Elle permet aussi d’effectuer des opération GIT depuis le graph.

——————————————————————-

Lister vos commits git

Commençons par regarder nos commit de notre pull-request sous Bitbucket.

Liste des commits de la pull request sous Bitbucket

Comme vous pouvez le constater sur cette capture, j’ai commité et pushé 7 commits.
Pour avoir accès à cette liste de commits depuis l’extension Git graph, il vous suffit de :

  • cliquer sur l’icone Source controle dans le menu de gauche
  • Cliquer sur l’icone de graph
  • Ensuite nous filtrons la vue sur la branche remote : origin/JIRA-20
Liste des commits sous VSCode

Lancer le rebase avec VSCode et Git graph

Sous IntelliJ il fallait faire un clic droit sur le premier commit pour réaliser le squash des commits

Sous VSCode par contre, dans la vue de Git graph, il faut faire un clic droit sur le commit qui précède le premier commit fait sur la branche. Dans notre cas il s’agit de First commit.
Sélectionner l’option Rebase current branch on this commit…

Lancer le rebase des commits via l'action Rebase current branch on this Commit

Une nouvelle popin va s’ouvrir comme le montre la capture suivante, cocher Launch Interactive Rebase in new Terminal, ensuite cliquer sur Yes, rebase

Activer le rebase interactif sous VSCode pour squasher les commits

Un terminal VSCode va s’ouvrir et afficher la liste des commits que nous allons fusionner.

Liste des commtis dans le terminal de VSCode

Il faut ensuite à partir du deuxième commit remplacer pick par s (pour squash) comme le montre la capture d’écran qui suit.

Appliquer un squash sur les commits

On sauvegarde les modifications en effectuant l’ensemble des manipulations suivantes avec le clavier:

  • Esc
  • taper sur :wq
  • Appuyer sur Entrer

Le terminal change pour afficher l’ensemble des commits messages. Le but est donc de ne laisser qu’un commit message.

Liste des commtis message avant le squash des commits

Une fois l’édition finie, je sauvegarde les changements comme précédemment.

  • Esc
  • :wq
  • Enter
Nouveau commit message pour le squash des commits

Pusher les changements

VSCode va ensuite afficher un bouton pour synchroniser les changements (pull / push).
Il ne faut surtout pas cliquer dessus. Nous allons devoir faire un push (Force) afin que git réécrive l’historique des commits.

Synchronisation des changements sous VSCode

Activer l’option push (Force)

Si ce n’est pas déjà fait activer l’option git push (Force) dans les settings de VSCode.

Activer push (Force) sous VSCode

Pour pusher les changement, accéder au menu des actions Git, ensuite pull, push et cliquer sur Push (Force)

Lancer le push (Force) depuis VSCode

Résultat du push

Si vous affichez de nouveau la vue git graph, il n’y a plus qu’un commit sur notre branche avec le nouveau commit message sauvegardé.

Commit sous git graph apres le squash

Il en est de même sous Bitbucket.

Commit sous bitbucket apres le squash