Eliminar permanentemente un único compromiso antiguo en Git

Hace aproximadamente dos meses, uno de mis compañeros de trabajo agregó sus entornos virtuales en nuestro repository de Git y lo impulsó.

Lo eliminé en un commit / push posterior y lo agregué al .gitignore.

Sin embargo, desde entonces hemos tenido aproximadamente 500 commits más.

¿Hay alguna manera de eliminar su compromiso original de la línea 90k de Github y nuestros repositorys locales sin causar ningún problema?

Puede crear una bifurcación desde la confirmación antes del problema, y ​​una bifurcación con la primera confirmación después del problema. Luego rebase el segundo en el primero. Luego, si restablece su maestro para que apunte a la nueva punta de esa twig, y ​​elimina todas las references a la otra línea, GC eventualmente destruirá los elementos.

Por supuesto, es probable que desee volver a clonar el repository de todos después, ya que este es un cambio tan invasivo que implica la actualización de un montón de references (suponiendo por su descripción que muchas cosas han sucedido en el repository desde este).

Github tiene una página de ayuda para eliminar datos confidenciales que se aplicarían también a tu situación (solo hay unas pocas partes específicas de Github que puedes ignorar).

La buena noticia es que puedes eliminar el compromiso anterior.

La mala noticia es que puede causar problemas con sus queueboradores, a less que pueda comunicarse de manera muy efectiva que todo el historial del repository cambiará. Necesitarán reubicar todas sus twigs de trabajo contra la nueva historia.