Desde su pregunta, creo que quieres algo así como this.
git-rebase(1) hace exactamente eso.
$ git rebase -i HEAD~5
git awsome-ness contiene un ejemplo.
- No utilice
git-rebase
en commits públicos (remotos).
- Asegúrese de que su directorio de trabajo esté limpio (
commit
o stash
sus cambios actuales).
- Ejecute el comando anterior. Lanza su
$EDITOR
.
- Reemplazar
pick
antes de C
y D
por squash
. Fundirá C y D en B. Si desea eliminar una confirmación, simplemente elimine su línea.
Si se pierden, Tipo:
$ git rebase --abort
Sin embargo, a copmress la carpeta .git con seguridad, lo anterior no es recomendable. Puede intentar lo siguiente como se menciona en un comment por Linus.
git repack -a -d --depth=250 --window=250
donde esa cosa profundidad se trata sólo de la profundidad de las cadenas delta pueden ser (hacerlas más largas de la historia antigua - vale la pena el espacio de arriba), y la cosa ventana es de lo grande de una ventana de objeto queremos que cada delta candidato para escanear.
Eche un vistazo a [esta respuesta] (http://stackoverflow.com/a/8483112/357743). No sé cuánto reducirá el tamaño del directorio '.git', pero es la manera más simple de probar que no hará ningún cambio en el historial de su repositorio. Las respuestas a [esta pregunta] (http://stackoverflow.com/questions/4515580/how-do-i-remove-the-old-history-from-a-git-repository) pueden ser útiles también. –