Eu estava trabalhando em um repositório na minha conta do GitHub e esse é um problema que me deparei.
- Projeto Node.js com uma pasta com alguns pacotes npm instalados
- Os pacotes estavam na
node_modules
pasta - Adicionada a pasta ao repositório git e empurrou o código para o github (não estava pensando na parte npm naquela época)
- Percebeu que você realmente não precisa dessa pasta para fazer parte do código
- Excluiu essa pasta, empurrou-a
Nesse caso, o tamanho do repositório Git total era de cerca de 6 MB, enquanto o código real (todos, exceto a pasta) era de apenas 300 KB .
Agora, o que estou procurando no final é uma maneira de livrar-se dos detalhes dessa pasta de pacotes do histórico do git; portanto, se alguém o clona, ele não precisa fazer o download de 6mb no histórico, onde os únicos arquivos reais serão recuperados a partir do último commit seria 300 KB.
Procurei possíveis soluções para isso e tentei esses 2 métodos
- Remover arquivo do repositório git (histórico)
- http://help.github.com/remove-sensitive-data/
- https://gist.github.com/1588371
O Gist parecia que funcionava onde, depois de executar o script, mostrava que ele se livrava dessa pasta e depois mostrava que 50 commits diferentes foram modificados. Mas isso não me deixou levar esse código. Quando tentei empurrá-lo, ele disse, Branch up to date
mas mostrou que 50 commits foram modificados em a git status
. Os outros 2 métodos também não ajudaram.
Agora, apesar de mostrar que se livrou do histórico dessa pasta, quando verifiquei o tamanho desse repositório no meu host local, ele ainda estava em torno de 6 MB. (Também excluí a refs/original
pasta, mas não vi a alteração no tamanho do repositório).
O que pretendo esclarecer é que, se existe uma maneira de se livrar não apenas do histórico de consolidação (que é a única coisa que acho que aconteceu), mas também daqueles arquivos que o git continua assumindo que se deseja reverter.
Vamos dizer que uma solução é apresentada para isso e aplicada no meu host local, mas não pode ser reproduzida no repositório GitHub, é possível cloná-lo, a reversão para o primeiro commit executa o truque e o pressiona (ou isso significa que o git irá ainda tem um histórico de todos esses commits? - também conhecido como 6MB).
Meu objetivo final aqui é basicamente encontrar a melhor maneira de livrar-se do conteúdo da pasta do git, para que um usuário não precise baixar 6MB de material e ainda possua os outros commits que nunca tocaram na pasta modules (isso é bastante todos eles) na história do git.
Como posso fazer isso?