J'ai eu un problème similaire que j'ai résolu comme suit:
C'est le groupe de commit 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 voir, je ne voulais pas. 4, mais 1, 2 et 3 n'avaient pas de commit préalable à écraser . D'où le Cannot «squash» sans une erreur de validation précédente .
Ma solution était d'utiliser l' r
option pour# r, reword = use commit, but edit the commit message
Donc ma liste de commits ressemblait à 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 l'enregistrement, le shell interactif m'a demandé de reformuler le commit choisi.
Après cela, mon journal de commit a abouti à un seul commit qui a abouti à un historique de commit plus propre.