Com que frequência você deve usar o git-gc?
A página do manual simplesmente diz:
Os usuários são incentivados a executar esta tarefa regularmente em cada repositório para manter uma boa utilização do espaço em disco e um bom desempenho operacional.
Existem alguns comandos para obter algumas contagens de objetos para descobrir se é hora de fazer o gc?
gc.autodetach
(Git 2.0 Q2 2014) pode ajudar na execuçãogit gc --auto
sem bloquear o usuário. veja minha resposta abaixo .Respostas:
Depende principalmente de quanto o repositório é usado. Com um usuário fazendo check-in uma vez por dia e uma operação de ramificação / mesclagem / etc uma vez por semana, você provavelmente não precisará executá-lo mais de uma vez por ano.
Com várias dezenas de desenvolvedores trabalhando em várias dezenas de projetos, cada uma fazendo o check-in 2-3 vezes ao dia, você pode executá-lo todas as noites.
Não vai doer executá-lo com mais frequência do que o necessário, no entanto.
O que eu faria é executá-lo agora, e daqui a uma semana faça uma medição da utilização do disco, execute-o novamente e meça a utilização do disco novamente. Se cair 5%, execute-o uma vez por semana. Se cair mais, execute-o com mais frequência. Se cair menos, execute-o com menos frequência.
fonte
Observe que a desvantagem de coletar lixo em seu repositório é que, bem, o lixo é coletado. Como todos sabemos como usuários de computador, os arquivos que consideramos lixo agora podem se tornar muito valiosos em três dias no futuro. O fato de o git manter a maior parte de seus detritos salvou meu bacon várias vezes - ao navegar por todos os compromissos pendentes, recuperei muito trabalho que eu havia enlatado acidentalmente.
Portanto, não seja muito louco em seus clones particulares. Há pouca necessidade disso.
OTOH, o valor da recuperação de dados é questionável para repositórios usados principalmente como controles remotos, por exemplo. o local em que todos os desenvolvedores pressionam e / ou puxam. Lá, pode ser sensato iniciar uma corrida de GC e reembalar frequentemente.
fonte
git gc --help
, especificamente a--prune
opção). Também há menção degc.reflogExpire
, o que me leva a acreditar que qualquer confirmação que você visitou nos últimos 90 dias não será coletada. (Minha versão git: v1.7.6)Versões recentes do git executam o gc automaticamente quando necessário, portanto você não precisa fazer nada. Veja a seção Opções do man git-gc (1) : "Alguns comandos git executam git gc --auto após executar operações que podem criar muitos objetos soltos."
fonte
gc --auto
, eu acho.Se você estiver usando o Git-Gui , ele informa quando você deve se preocupar:
O comando a seguir trará um número semelhante:
Exceto que, a partir de sua fonte , o git-gui fará as contas sozinho, contando algo na
.git/objects
pasta e provavelmente traz uma aproximação (não seitcl
ler direito!).De qualquer forma, parece dar o aviso com base em um número arbitrário em torno de 300 objetos soltos.
fonte
Git-Gui
ecount-objects
não são exatamente boas respostas para a pergunta aqui ... Mas deveriam ser!Coloque-o em um trabalho cron que é executado todas as noites (tarde?) Quando você está dormindo.
fonte
Uso o git gc depois de fazer um checkout grande e ter muitos objetos novos. Isso pode economizar espaço. Por exemplo, se você faz o checkout de um grande projeto SVN usando git-svn e faz um git gc, normalmente economiza muito espaço
fonte
Você pode fazer isso sem nenhuma interrupção, com a nova configuração (Git 2.0 Q2 2014)
gc.autodetach
.Veja commit 4c4ac4d e commit 9f673f9 ( Nguyễn Thái Ngọc Duy, também conhecido como pclouds ):
Desde a versão 2.0, ocorreu um erro: o git 2.7 (quarto trimestre de 2015) garantirá que não perca a mensagem de erro .
Ver commit 329e6e8 (19 de setembro de 2015) por Nguyễn Thái Ngọc Duy (
pclouds
) .(Mesclado por Junio C Hamano -
gitster
- na confirmação 076c827 , 15 de outubro de 2015)fonte
Esta citação é retirada de; Controle de versão com Git
fonte
git commit --amend
). Isso pode ser verificado comgit log --reflog
. Empurrei um ramo para o repositório remoto e verifiquei minha árvore novamente; os commits inacessíveis ainda estavam lá. Aparentemente,git gc
não foi executado quando esse impulso aconteceu. ...?Eu uso quando faço um grande commit, sobretudo quando removo mais arquivos do repositório .. depois, os commit são mais rápidos
fonte
Você não precisa usar com
git gc
muita frequência, porquegit gc
(a coleta de lixo) é executada automaticamente em vários comandos usados com frequência:Fonte: práticas recomendadas do git gc e perguntas frequentes
fonte