Suponiendo que no le importe retener ninguno de sus mensajes de confirmación existentes, hay una receta de git ingeniosa (y rápida) que puede usar. Primero, asegúrese de que su sucursal esté desprotegida:
git checkout <branch-to-squash>
Por seguridad, permite etiquetar el compromiso actual.
git tag my-branch-backup
A continuación, mover el cabezal de rama de vuelta a su última buena comprometerse (sin modificar el espacio de trabajo o índice):
git reset --soft <last-good-commit>
Usando git status
, se dará cuenta de que todos los cambios en su rama de la característica son ahora en escena Todo lo que queda por hacer es ...
git commit
Este método es ideal para la consolidación, historias enrevesadas git largos y retorcidos fusiones. ¡Además, no hay conflictos de fusión/rebase para resolver!
Ahora, si necesita conservar alguno de sus mensajes de confirmación existentes o hacer algo más elegante que el anterior, querrá usar git rebase --interactive
.
Solución derivados de: http://makandracards.com/makandra/527-squash-several-git-commits-into-a-single-commit
Referencia: http://git-scm.com/docs/git-reset
Referencia: http://git-scm.com/docs/git-rebase
ver este Preguntas y Respuestas http: // stackoverflow.com/questions/250238/collapsing-a-git-repositorys-history – iafonov