Eliminar commit, realmente

Nuevo repository, sin control remoto (así que: sin empujar), sin tags utilizadas.

» echo "aaa" > aaa » git init » git add . » git commit -a -m "Added aaa" » echo "bbb" > aaa » git commit -a -m "This commit is wrong" f9892d8 : author : 1 second ago : (HEAD, master) : This commit is wrong e80f2bd : author : 14 seconds ago : : Added aaa » git reset --hard HEAD~1 e80f2bd : author : 14 seconds ago : : Added aaa » git checkout f9892d8 Note: checking out 'f9892d8'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b new_branch_name HEAD is now at f9892d8... This commit is wrong 

Por lo tanto, incluso después de git reset --hard la confirmación aún está allí. Hacer recolección de basura ( git gc ) tampoco ayuda.

Realmente quiero deshacerme del compromiso equivocado, para siempre. Como si nunca hubiera existido. ¡No en esta twig, no en ninguna twig, no en la historia, en ninguna parte!

¿Es posible decirle a git "olvida este compromiso, nunca existió"?

EDITAR

Para que quede perfectamente claro: no estoy interesado en eliminar el compromiso de la twig actual, sino en eliminar la confirmación de todo el repository . No debe haber rastros de él en ninguna parte del repository: no en otra twig, no como huérfano, simplemente no en ninguna parte . Como si nunca hubiera existido.

Git siempre es reacio a eliminar realmente algo del repository; simplemente hacerlo invisible es "lo suficientemente bueno", insiste git, porque tal vez quieras eliminarlo más tarde y si es simplemente invisible, entonces, ¡puedes volver!

Por supuesto, eventualmente todos esos objects invisibles pero aún ahí (confirmaciones, treees, blobs e incluso objects de label anotados) llenarán su disco. ("¡Pero el espacio en el disco es infinito", git sigue diciéndome! :-)) Entonces, sí, es posible lograr que el compromiso se recoja verdaderamente y se vaya para siempre.

El método está embedded en esta respuesta : busque "Lista de verificación para networkingucir el tamaño de un repository". No necesita preocuparse por la parte refs/original/refs/heads/master ya que git filter-branch (que no creó) usar aquí).