Parece que meu projeto está ficando cada vez maior a cada git commit/push
. Existe uma maneira de limpar minha pasta git?
156
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 gc
quais "limparão arquivos desnecessários e otimizarão o repositório local" ( página de manual ).
Outro comando possivelmente relevante é o git clean
que excluirá arquivos não rastreados da sua árvore ( página de manual ).
WARNING
O 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,.gitignore
será apagada.git clean -dfX
(observe o caso noX
) removerá apenas itens com uma regra aplicável.gitignore
. Preste atenção a este aviso: nunca executegit clean
sem executá-lo no modo interativo, em-i
vez de-f
, ou pelo menos executando primeiro a seco --n
e depois novamente com-f
.Corre:
Exclui todas as ramificações de rastreamento antigas que já foram removidas,
origin
mas ainda estão disponíveis localmente emremotes/origin
.' G arbage C ollection' - executa tarefas domésticas tarefas (compressas revisões, remove perder / objetos inacessíveis). O
--auto
sinalizador primeiro determina se algum trabalho é necessário e sai sem fazer nada, se não.fonte
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:
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).
fonte
sim sim,
git gc
é a solução, naturalmente,e localmente - você pode simplesmente excluir o repositório local e cloná-lo novamente,
mas há algo mais importante aqui ...
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!
fonte
A execução deste comando é extremamente perigosa, mas reduzirá seu repositório apagando todos os seus arquivos de recuperação / backup do git:
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ê fazgit reset --hard
antes dogit 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.fonte
git clean -d -f -i
é a melhor maneira de fazer isso.Isso ajudará a limpar de maneira mais controlada.
-i
significa interativo.fonte
git clean
nã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çogit repack -ad
, o que reduz o número de arquivos de pacote.fonte
git gc
processo, assim não há necessidade de executá-lo separadamente