¿Puedo eliminar la confirmación inicial de un repository de Git?

Parece que mi compromiso inicial está ocupando el 90% del espacio, ya que se hizo accidentalmente con bastantes files multimedia en él. ¿Hay alguna manera de eliminar solo el primer compromiso de repos locales y remotos, o debería dejar este?

Parece que ya compartió el repository con otros usuarios. Si este es el caso, entonces probablemente solo deberías vivir con eso.

Si tiene el control de todos los clones, puede volver a escribir el historial sobre una confirmación raíz modificada con los files no deseados eliminados. Tenga en count que no debe hacer esto si otros desarrolladores ya han funcionado desde esta twig.

Si te interesa reescribir el historial, puedes probar lo siguiente. Tenga en count que, dado que git mantiene loggings de dónde ha estado recientemente su commit de HEAD (reflogs), los objects grandes no desaparecerán inmediatamente de su repository u otros repositorys que ya los tengan, incluso si intenta hacer git gc o git gc --prune Sin embargo, garantizará que los clones nuevos no terminen recuperando los objects grandes como parte del historial de la twig maestra.

Suponiendo que su directory de trabajo está 'limpio':

 # Go back the initial commit git checkout <SHA1_of_old_root> # Clean up the index to remove unwanted files, eg using git rm <files> # ... # Amend the initial commit with the new tree. Note the sha1 of the new commit git commit --amend # Go back to the master branch git checkout master # Re-apply all the commits onto the new root git rebase --onto <SHA1_of_new_root> <SHA1_of_old_root> 

Alternativamente, puede usar git filter-branch para eliminar files ofensivos (consulte la sección EJEMPLOS), pero también está reescribiendo el historial. Por lo tanto, cualquiera que haya basado su código en la parte superior de su historia anterior tendrá una mala sorpresa …