Tengo un historial de cometer git como este:
U / A---B---C---D---E master
Nada apunta al compromiso U
, pero sé que es hash. ¿Cómo puedo eliminar completamente este compromiso de mi repository como si nunca hubiera existido? Soy la única persona que usa este repository.
Traté de usar git rebase
, pero eso puede eliminar partes de una twig o mover confirmaciones, pero no parece ser capaz de eliminar una sola confirmación.
Si hago git checkout <hash>
y luego git reset --hard HEAD~1
Ya no veo el commit. ¿Se ha ido completamente o todavía está escondido en el repository?
Finalmente, Git lo limpiará, pero puedes ver git gc
para forzar la recolección de basura.
El command clean
es diferente y no se ocupará de esto por ti.
Como se describe aquí , simplemente use
git reflog expire --expire-unreachable=now --all git gc --prune=now
git reflog expire --expire-unreachable=now --all
elimina todas las references de commits inalcanzables en reflog
.
git gc --prune=now
elimina los commits ellos mismos.
Atención : solo usar git gc --prune=now
no funcionará, ya que las confirmaciones aún se referencen en el reflog. Por lo tanto, borrar el reflog es obligatorio.