Atualização: git prune"resolveria" o problema, pois removeria esses objetos soltos
( git gcchamadas git prune, mas apenas para objetos soltos com mais de duas semanas, por padrão).
No entanto, como o OP Michael Donohue menciona nos comentários:
Eu gosto do aspecto de segurança de manter os objetos soltos por duas semanas, caso eu queira voltar e examinar algumas revisões antigas, para que eu realmente não goste desta solução.
Não estou tendo nenhum problema com o tamanho ou o desempenho do git, é apenas o 'git gui' que insiste em me pedir para compactar o banco de dados, mesmo quando compactá-lo não teria efeito.
Resposta original:
O problema de " git gc" não remover todos os objetos soltos já foi relatado antes (no final de 2008, " " git gc"parece não remover mais objetos soltos "
git gcremove apenas objetos soltos com mais de duas semanas. Se você realmente deseja removê-los agora, execute git prune.
Mas certifique-se de que nenhum outro processo git possa estar ativo quando você o executar, ou ele poderá pisar em alguma coisa.
" git gc" descompactará objetos que se tornaram inacessíveis e estavam atualmente em pacotes.
Como resultado, a quantidade de espaço em disco usada por um repositório git pode realmente aumentar drasticamente após uma " git gc" operação, o que pode ser surpreendente para alguém que está executando quase completamente em seu sistema de arquivos, exclui várias ramificações de um repositório de rastreamento , e então " git gc" pode receber uma surpresa muito desagradável.
[Exemplo: ]ramificações antigas são reservadas por meio de uma tag como next-20081204.
Se você atualizar sua cópia local do linux-nextrepositório todos os dias, acumulará um grande número dessas tags de ramificação antigas.
Se você excluir uma série inteira e executar git-gc, a operação levará um bom tempo e o número de blocos e inodes usados crescerá significativamente.
Eles desaparecerão após um " git prune", mas quando eu faço essa operação de limpeza, muitas vezes desejei uma --yes-I-know-what-I-am-doing-and-it's-unsafe-but-just-drop-the-unreachable-objects-cause-this-is-just-a-tracking-repositoryopção para "git gc".
Então, no seu caso, um " git prune" seria útil?
(possivelmente usando "now" na gc.pruneexpirevariável de configuração, necessária para que o comportamento acima ocorra).
Você também tem (do mesmo segmento):
repack -a -d -l
Observe a letra minúscula 'a'.
git-gcchama reembalar com 'A' maiúsculo, que é o que faz com que os objetos inacessíveis sejam descompactados. O pequeno 'a' é para pessoas que sabem o que estão fazendo e querem que o git simplesmente solte objetos inacessíveis.