J'ai eu un problème similaire que j'ai résolu comme suit :
C'est le groupe d'engagement que je voulais écraser :
1 s 01cc5a08 Removes open div
2 s a2b6eecf Restores old fonts
3 s 603479ff Cleans left out div
4 pick 5afdbc33 Update: show logo on landing page
5 s 04c1cb13 change version of dev and prod from 1 to 2
6 s bbe6a8f8 Update: show logo on landing page if they have one
7 s c0d6008a Adds check for C users
Comme vous pouvez le constater, je voulais le no. 4, mais les numéros 1, 2 et 3 n'avaient pas d'engagement antérieur. courge en . Par conséquent, le Impossible d'effectuer un "squash" sans un commit précédent erreur.
Ma solution a consisté à utiliser la fonction r
option pour les # r, reword = use commit, but edit the commit message
Ma liste d'engagements ressemblait donc à ceci :
1 r 01cc5a08 Removes open div
2 s a2b6eecf Restores old fonts
3 s 603479ff Cleans left out div
4 s 5afdbc33 Update: show logo on landing page
5 s 04c1cb13 change version of dev and prod from 1 to 2
6 s bbe6a8f8 Update: show logo on landing page if they have one
7 s c0d6008a Adds check for C users
Après avoir sauvegardé, le shell interactif m'a demandé de reformuler le commit choisi.
Après cela, mon journal des livraisons n'a donné lieu qu'à une seule livraison, ce qui a permis de nettoyer l'historique des livraisons.
1 votes
Remplacez HEAD~2 par HEAD~3 si vous voulez vraiment faire du squash.
3 votes
Et éventuellement utiliser --Root, si HEAD~2 est votre premier commit : stackoverflow.com/a/598788/2444812