forma de combinar todas las confirmaciones en una única confirmación utilizando libgit2

Quiero combinar todas las confirmaciones en una para eliminar el historial. Sé que es posible en la command-line de Git, pero aún no encontré una forma de libgit2.

Estoy usando libgit2 en la última versión, comstackda por mí en C ++.

¿Que sugieres?

Hay algunas maneras de pensar sobre esto. En la línea de command, podrías hacer algo como esto:

git reset --soft <some-ancestor-commit-ish> git commit -m "This commit combines some history." 

El reinicio suave mueve la twig actual para que apunte a alguna ancestro sin cambiar el directory y el índice de trabajo. Así que ahora tiene todos los cambios introducidos por esos commits en etapas y puede comprometerlos como un nuevo commit combinado. Esos dos pasos se pueden traducir directamente a libgit2 con algo como:

 git_reset(repo, ancestor_commit, GIT_RESET_SOFT, NULL); git_commit_create(...);