cómo eliminar el file previamente comprometido de git repo?

Accidentalmente cometí un file zip grande y lo empujé a bitbucket.

Ahora, ya he agregado el file a .gitignore y uso git rm --cached para eliminarlo y git rm --cached la eliminación del file.

Pero cuando git checkout confirmación previa, el file comprimido grande todavía está allí. Lo que significa que todavía está en el repository git.

¿Cómo puedo eliminar este gran file comprimido por completo?

Gracias por adelantado.

Como solo tiene una confirmación en la parte superior de la confirmación que contiene el file binary grande, es posible que pueda evitar una rebase interactiva.

Primero, transfiere el segundo commit que hiciste al eliminar el file binary grande:

 git reset --hard HEAD~1 

Esto te deja exactamente en el estado que tenías cuando acababas de enviar el gran file binary.

Ahora, en este punto, el file binary grande debería volver a aparecer localmente. Elimine este file, luego agregue ese cambio al índice si Git aún no lo hizo por usted.

Finalmente, modifique la mala confirmación a través de:

 git commit --amend 

Para llevar esta twig a Bitbucket deberás forzar push porque has reescrito el historial:

 git push --force origin feature 

Tenga en count que presionar con fuerza reescribe el historial remoto, lo que puede causar problemas para cualquier otra persona que comparta esta twig. En su caso, los beneficios de hacer esto probablemente sean más altos teniendo un binary enorme como parte de su historia.

La manera más segura y, probablemente, más limpia de ir es la rebase interactiva.

 git rebase -i HEAD^^ 

O,

 git rebase -i your-commit-no^ 

A partir de ahí, puedes aplastar los commits, que junta uno o más commits en el commit anterior. Para eliminar por completo una confirmación del historial, elimine la línea de la list.

Puede revertir una confirmación con

 git revert 

pero va a agregar más posts de confirmación al historial, lo que puede ser indeseable. Use el parámetro -n para indicarle a Git que no debe revertir de inmediato. Puede reajustar de manera interactiva y aplastar a aquellos hasta un compromiso anterior para mantener las cosas limpias.

Si los dos commits con los que está trabajando afectan al mismo file (s), es posible que vea un conflicto de combinación.

Restablecer el repository con

 git reset --hard 

debe hacerse con cuidado, ya que no se puede deshacer.

Reescribir la historia debe hacerse con cuidado.