En supposant que vous ne souhaitiez pas conserver vos messages de validation existants, il existe une recette git pratique (et rapide) que vous pouvez utiliser. Tout d'abord, assurez-vous que votre branche est vérifiée :
git checkout <branch-to-squash>
Pour plus de sécurité, marquons le commit actuel.
git tag my-branch-backup
Ensuite, déplacez la branche HEAD jusqu'à votre dernier bon commit (sans modifier l'espace de travail ou l'index). EDIT : Le dernier bon commit est le commit le plus récent sur votre branche que vous souhaitez conserver.
git reset --soft <last-good-commit>
Utilisation git status
vous remarquerez que tous les changements sur votre branche de fonctionnalité sont maintenant mis en scène. Il ne reste plus qu'à ...
git commit
Cette méthode est idéale pour consolider les historiques git longs et alambiqués et les fusions difficiles. De plus, il n'y a pas de conflits merge/rebase à résoudre !
Maintenant, si vous avez besoin de conserver vos messages de validation existants ou de faire quelque chose de plus fantaisiste que ce qui précède, vous devrez utiliser git rebase --interactive
.
Solution dérivée de : http://makandracards.com/makandra/527-squash-several-git-commits-into-a-single-commit
Référence : http://git-scm.com/docs/git-reset
Référence : http://git-scm.com/docs/git-rebase