Estaba trabajando en un repositorio en mi cuenta de GitHub y este es un problema con el que me topé.
- Proyecto Node.js con una carpeta con algunos paquetes npm instalados
- Los paquetes estaban en la
node_modules
carpeta - Agregó esa carpeta al repositorio de git y empujó el código a github (no estaba pensando en la parte npm en ese momento)
- Me di cuenta de que realmente no necesitas esa carpeta para ser parte del código
- Eliminé esa carpeta, la empujé
En ese caso, el tamaño del repositorio total de git era de alrededor de 6 MB, donde el código real (todo excepto esa carpeta) era de solo alrededor de 300 KB .
Ahora, lo que estoy buscando al final es una forma de deshacerme de los detalles de esa carpeta del paquete del historial de git, por lo que si alguien lo clona, no tienen que descargar un historial de 6 MB donde solo obtendrán los archivos reales. a partir de la última confirmación sería de 300 KB.
Busqué posibles soluciones para esto y probé estos 2 métodos
- Eliminar archivo del repositorio de git (historial)
- http://help.github.com/remove-sensitive-data/
- https://gist.github.com/1588371
Gist parecía que funcionaba donde, después de ejecutar el script, mostraba que se había deshecho de esa carpeta y luego mostraba que se habían modificado 50 commits diferentes. Pero no me dejó empujar ese código. Cuando traté de presionarlo, dijo Branch up to date
pero mostró que 50 commits fueron modificados en a git status
. Los otros 2 métodos tampoco ayudaron.
Ahora, aunque demostró que se deshizo del historial de esa carpeta, cuando verifiqué el tamaño de ese repositorio en mi localhost, todavía era de alrededor de 6 MB. (También eliminé la refs/original
carpeta pero no vi el cambio en el tamaño del repositorio).
Lo que quiero aclarar es, si hay una manera de deshacerse no solo del historial de confirmaciones (que es lo único que creo que sucedió) sino también de esos archivos que git sigue asumiendo que uno quiere revertir.
Digamos que se presenta una solución para esto y se aplica en mi host local, pero no se puede reproducir en ese repositorio de GitHub, ¿es posible clonar ese repositorio? ¿Todavía tienes un historial de todos esos commits?
Mi objetivo final aquí es básicamente encontrar la mejor manera de deshacerme del contenido de la carpeta de git para que un usuario no tenga que descargar cosas por valor de 6MB y aún así posiblemente tenga los otros commits que nunca tocaron la carpeta de módulos (eso es bastante mucho todos ellos) en la historia de git.
¿Cómo puedo hacer esto?