Combiner la révision 3 et 4 en une seule révision, vous pouvez utiliser git rebase. Si vous souhaitez supprimer les modifications dans la révision 3, vous devez utiliser la commande modifier dans le rebase interactif mode. Si vous souhaitez combiner les changements en une seule révision, l'utilisation de squash.
J'ai utilisé avec succès cette courge technique, mais n'ont jamais eu besoin de supprimer une révision avant. Git-git rebase documentation dans le cadre du "Splitting s'engage" devrait vous donner assez d'une idée pour le comprendre. (Ou quelqu'un d'autre peut le savoir).
Depuis le git de la documentation:
Démarrez avec le dernier commit que vous voulez à retenir est:
git rebase -i <after-this-commit>
Un éditeur sera tiré, avec tous les changements dans votre branche courante (en ignorant fusion s'engage), qui intervient après la validation donnée. Vous pouvez réorganiser les commits dans cette liste le contenu de votre coeur, et vous pouvez les supprimer. La liste semble plus ou moins comme ceci:
choisissez deadbee La oneline de ce commit
choisissez fa1afe1 La oneline du prochain commit
...
Le oneline descriptions sont purement pour votre plaisir; git-git rebase ne sera pas regarder à eux, mais à la validation des noms ("deadbee" et "fa1afe1" dans cet exemple), afin de ne pas supprimer ou modifier les noms.
En remplaçant la commande "ramasser" avec la commande "edit", vous pouvez indiquer à git-git rebase pour arrêter après l'application qui s'engagent, de sorte que vous pouvez modifier les fichiers et/ou le message de commit modifier le commettre, et continuer de rebasage.
Si vous voulez plier en deux, ou plus, s'engage dans une, remplacer la commande "sélection" avec "squash" pour la deuxième et les suivantes s'engager. Si les commits avait différents auteurs, il attribue l'écrasé de s'engager à l'auteur de la première validation.