Remove arquivos grandes de vários commits atrás (no git)

6

Eu fiz vários commits locais para minha base de código e tentei enviar para o repositório, mas havia muitos arquivos grandes. Eu simplesmente desisti e continuei trabalhando, fazendo commits locais. Eu deletei os arquivos grandes agora e os cometi novamente, mas ele ainda está tentando empurrar os arquivos grandes originais. Eu tentei adicionar um gitignore depois que eu os cometi originalmente para ignorar qualquer arquivo acima de 50mb, sem sucesso.

Alguma ideia?

    
por Gentatsu 22.03.2017 / 12:50

1 resposta

10

Leia aqui sobre o ramo de filtro.

Someone accidentally commits a huge binary file with a thoughtless git add ., and you want to remove it everywhere. Perhaps you accidentally committed a file that contained a password, and you want to make your project open source. filter-branch is the tool you probably want to use to scrub your entire history. To remove a file named passwords.txt from your entire history, you can use the --tree-filter option to filter-branch:

$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21)
Ref 'refs/heads/master' was rewritten

Você também pode fazer um rebase interativo em sua ramificação no ponto em que confirmou esses arquivos e removê-los dessa confirmação. O link acima também explica isso, mas basicamente:

git rebase -i HEAD~X

permitirá que você edite os últimos X commits.

    
por 22.03.2017 / 13:05

Tags