Parece que meu projeto está ficando cada vez maior a cada git commit/push. Existe uma maneira de limpar minha pasta git?
Parece que meu projeto está ficando cada vez maior a cada git commit/push. Existe uma maneira de limpar minha pasta git?
Respostas:
Não tenho certeza do que você quer. Primeiro de tudo, é claro que toda vez que você confirmar / enviar push ao diretório, ele ficará um pouco maior, pois ele precisará armazenar cada um desses commit adicionais.
Entretanto, provavelmente você deseja git gcquais "limparão arquivos desnecessários e otimizarão o repositório local" ( página de manual ).
Outro comando possivelmente relevante é o git cleanque excluirá arquivos não rastreados da sua árvore ( página de manual ).
WARNINGO comando descrito acima por @Kalle removerá TODOS > <ARQUIVOS E DIRETÓRIOS NÃO CONTROLADOS DENTRO DO GIT ROOT , não apenas "arquivos listados em .gitignore". Qualquer coisa que não esteja sendo rastreada pelo Git, independentemente de estar ou não listada, .gitignoreserá apagada. git clean -dfX(observe o caso no X) removerá apenas itens com uma regra aplicável .gitignore. Preste atenção a este aviso: nunca execute git cleansem executá-lo no modo interativo, em -ivez de -f, ou pelo menos executando primeiro a seco - -ne depois novamente com -f.
Corre:
git remote prune origin
Exclui todas as ramificações de rastreamento antigas que já foram removidas, originmas ainda estão disponíveis localmente em remotes/origin.
git gc --auto
' G arbage C ollection' - executa tarefas domésticas tarefas (compressas revisões, remove perder / objetos inacessíveis). O --autosinalizador primeiro determina se algum trabalho é necessário e sai sem fazer nada, se não.
Um cenário em que seu repositório git ficará muito maior a cada confirmação é aquele em que você está enviando arquivos binários gerados regularmente. O armazenamento deles não será tão eficiente quanto o arquivo de texto .
Outro é aquele em que você tem um grande número de arquivos em um repositório (que é um limite de git ) em vez de vários sub-repositórios ( gerenciados como sub-módulos ).
Neste artigo sobre o espaço git , o AlBlue menciona:
Observe que o Git (e o Hg e outros DVCSs) sofrem de um problema no qual os binários (grandes) são registrados e excluídos, pois ainda aparecerão no repositório e ocuparão espaço, mesmo se não estiverem atualizados. .
Se você possui binários grandes armazenados em seu repositório git, considere:
git filter-branch (aviso: isso irá reescrever o histórico, o que é ruim se você já enviou seu repositório por repetição e se outros foram retirados)Como mencionei em " Quais são os limites de arquivo no Git (número e tamanho)? ", O mais recente (2015, 5 anos após esta resposta) Git LFS do GitHub é uma maneira de gerenciar esses arquivos grandes (armazenando-os fora do diretório Repositório Git).
sim sim, git gcé a solução, naturalmente,
e localmente - você pode simplesmente excluir o repositório local e cloná-lo novamente,
os segundos em que você espera que esse enorme processo externo sejam processados são coletados por longos minutos nos quais são coletadas horas de tempo ineficiente gasto,
Crie um novo repositório (inteiramente, não apenas uma filial) do zero , incluindo a única versão recente dos arquivos, naturalmente você perderá todo o histórico,
mas quando no mundo do código não é hora de se sentir sentimental, não faz sentido arrastar todos os 5 anos de código a cada commit ou diff, você ainda pode armazenar o antigo git & externals em algum lugar, se sentir nostalgia:]
mas, em algum momento, você realmente precisa seguir em frente:]
sua equipe vai agradecer!
A execução deste comando é extremamente perigosa, mas reduzirá seu repositório apagando todos os seus arquivos de recuperação / backup do git:
git reflog expire --expire=now --all && git gc --prune=now --aggressive
Ele apagará todos os arquivos que o git usa para recuperar seu repositório de algum comando incorreto; por exemplo, se você o fez git reset --hard, geralmente poderá recuperar os arquivos perdidos. Mas se você faz git reset --hardantes do git reflog expire...comando, perde tudo. Agora, sua única esperança é usar alguma ferramenta que analise seu sistema de arquivos e tente recuperar os arquivos apagados, se eles não forem substituídos.
git clean -d -f -i é a melhor maneira de fazer isso.
Isso ajudará a limpar de maneira mais controlada.
-i significa interativo.
git cleannão é para limpar o repositório, mas para limpar o diretório. Para usuários que copiam / colam cegamente, tenha cuidado; isso remove arquivos / diretórios não rastreados que você pode realmente querer localmente.
Não sei se o encolherá, mas depois que corro git clean, também o faço git repack -ad, o que reduz o número de arquivos de pacote.
git gcprocesso, assim não há necessidade de executá-lo separadamente