Cómo eliminar REALMENTE una twig git (es decir, eliminar todos sus objects / confirmaciones)?

Tengo un tree git como

A---B---C topic / D---E---F---G master <-- 

Me gustaría eliminar el tema y todos los objects en él.

Anoto el ID SHA del tema, luego escribo:

 git branch -D topic git gc # <-- I also tried prune here... git checkout -b temp <SHA1 ID of topic> 

Después del último command, espero get un error (algo como "Id. De object inexistente …" o algo así). Sin embargo, no hay ningún error y gitk muestra la misma estructura de tree que la anterior?

¿Qué estoy perdiendo? ¿Creí que se suponía que gc / prune eliminaría todos los objects inalcanzables?

Solo la gd ciruela a menudo no es suficiente para deshacerse de los objects adicionales en el repository. Si los commits todavía se referencen en el reflog, no considerará que esos objects son inalcanzables y, por lo tanto, están listos para la poda.

Esto es lo que funcionó para mí:

 git reflog expire --expire=now --all git gc --aggressive --prune=now git repack -a -d -l 

Esto hará algunos cambios en la historia de su repository, y puede presentar dificultades si otros dependen de las twigs que usted destruye.

Puede que tenga que volver a clonar su repository para ver realmente una diferencia en su tamaño.

Nota: mayo de 2010: según lo mencionado por Jakub , si su twig se fusionó, el tema aún sería accesible.

Aquí, supongamos que no hubo fusión.
Luego, como se menciona en el libro ProGit y se detalla en esta pregunta SO :

 git gc --prune=now 

debería ser suficiente (debe llamar directamente a git prune ). Puedes controlar eso con un git count-objects -v .
Edición de abril de 2012: maxschlepzig en los comentarios confirma que podrían requerirse pasos adicionales, como se detalla en la respuesta de Duke (pero sin el git repack ).
Entonces, en lugar de un git gc --prune now :

 git reflog expire --expire=now --all git gc --aggressive --prune=now