Fusionner et Réorganiser les Commits Git : Guide Pratique
Aujourd’hui nous allons voir comment fusionner plusieurs commit ensemble pour n’en former qu’un seul.
Bien que cette manipulation soit relativement simple elle n’est pas souvent utilisé ce qui mène souvent a voir dans les branches master des commit sans ‘utilité’ fonctionnelle (commit de fix d’une erreur de syntaxe, plusieurs commit pour la même feature etc).
Pourquoi fusionner des commits dans git ?
Voyons tout d’abords les raisons qui peuvent nous amener a fusionner des commit :
- Vous avez fait un commit, mais il y’a une modification manquante. (ex. fichier manquant, erreur de syntaxe)
- Vous êtes sur un projet open source, vous faites des commits a chaque petites modifications. Il peut être utile de fusionner les commits en un seul pour éviter l’explosion du nombre de commit.
Maintenant que nous avons vu les principales raisons pouvant nous amener a fusionner des commit ensemble nous allons voir la méthode pour les fusionner ensemble.
Comment fusionner des commits dans git ?
J’ai initialisé un dépôt git avec deux commit : l’un pour le création d’un fichier squash.txt et le second après avoir renommé le fichier en git-squash.txt comme nous pouvons le voir dans l’image ci dessous. J’ai fais un troisieme commit afin d’avoir un rebase plus visible pour la seconde partie (il n’est absolument pas nécessaire)
Etant donné que je travaille en local je souhaiterai fusionner ces deux commit. J’utilise donc la commande git rebase.
Pour cela je fais un git rebase -i HEAD~2 (git rebase, en mode interactif a partir des deux commit précédent le HEAD (inclus)).
On voit donc nos commit (id et message) du plus vieux au plus récent dans un éditeur vim. Pour effectuer le rebase il faut modifier le fichier. Ici on veux fusionner le update (7cd2fe3) avec le précédent on remplace donc son pick par squash (l’option qui nous est utile).
Puis l’on enregistre les modification (option wq de vim). On obtient a nouveau l’éditeur vim avec les messages de nos commit a fusionner. On enregistre le nouveau commit avec son message en enregistrant comme lors de l’étape principale. Pour modifier le message il suffit de l’éditer directement (les lignes avec les # sont des commentaires).
A la fin nous obtenons donc les commit suivant :
Voila en espérant que cette astuce vous soit utile.
comments powered by Disqus