Outils pour utilisateurs

Outils du site


developpement:git-rebase-multiple-commits-to-one

Git : rebase plusieurs commits en un seul

Objectif

Le but ici est de regrouper plusieurs commit en un seul. Cette opération est généralement utile dans le cas d'une branche sur laquelle une succession de commit a été effectuée.

Il est généralement préférable de regrouper les commits en un ou plusieurs commits importants.

Procédure

Bien, on peut commencer. D'abord on récupère l'ID du commit initial, celui sur lequel vous avez basé votre branche.

git merge-base vieille-branche master

Ce qui donne un hash du genre 64bc92e3ac8f5e66d2bc17806ede31e6679d8c13.

On peut lancer le rebase avec :

git rebase --interactive 64bc92e3ac8f5e66d2bc17806ede31e6679d8c13

Note : –interactive peut être remplacé par -i.

Un écran de la forme suivante apparaît :

pick dd1475d bonne description de commit
pick 1fc6c95 commit sur machin
pick 6b2481b commit sur truc

Nous ce qu'on veut ici, c'est que toutes les modifications qui ont été apportée dans ces trois commits soient regroupées dans UN seul et même commit, le dd1475d bonne description de commit.

Pour cela, il faut remplacer le texte de la manière suivante :

pick dd1475d bonne description de commit
s 1fc6c95 commit sur machin
s 6b2481b commit sur truc

Une fois le fichier de rebase sauvegardé, vous allez avoir un deuxième fichier qui va s'ouvrir, avec les messages des 3 commits.

On ne garde que bonne description de commit (les commentaires et lignes vides ne sont pas ajoutées au message). Un coup de :wq une fois que votre commit message est satisfaisant, et le rebase est terminé.

Il n'y a plus qu'à push les changements effectués. Puisque vous avez virtuellement supprimé des commits, vous allez devoir le forcer :

git push fork vieille-branche --force
developpement/git-rebase-multiple-commits-to-one.txt · Dernière modification: 2015/06/24 12:44 par Arthur Hoaro