Pregunta Pode los datos binarios de un repositorio de git después del hecho


Accidentalmente cometí algunos datos binarios grandes en algunos commits. Desde entonces he actualizado mi .gitignore, y esos archivos ya no se están comprometiendo. Pero me gustaría volver a las confirmaciones más antiguas y eliminar de forma selectiva esta información del repositorio, eliminando un par de directorios que deberían haber estado en .gitignore. No quiero eliminar los commits ellos mismos.

¿Cómo podría lograr esto? Mi método preferido sería de alguna manera aplicar retroactivamente las reglas .gitignore a los commits antiguos ... una respuesta que use este método también sería bastante útil para otros, ya que estoy seguro de que mi problema no es único. También sería rápido aplicarlo a una solución general, sin mucha personalización específica para la estructura de directorios única de cada usuario.

¿Es esto posible, ya sea de la manera fácil que sugiero arriba, o de una manera más complicada?


32
2017-12-30 18:08


origen


Respuestas:


La solución en esta respuesta funcionó perfectamente para mí:

También puede probar su proceso de limpieza con un herramienta como bfg repo   limpiador, como en esta respuesta:

java -jar bfg.jar --delete-files *.{jpg,png,mp4,m4v,ogv,webm} ${bare-repo-dir};

(Excepto que BFG se asegura de que no borre nada en su último   confirmar, por lo que debe eliminar esos archivos en el índice actual y   hacer una confirmación "limpia". Todas las otras confirmaciones anteriores serán limpiadas por   BFG)


11
2017-11-18 22:54