Você pode simplesmente clicar em "Sim" na mensagem pop-up quando perguntar se os objetos soltos devem ser compactados agora. A GUI do Git será executada git gcpara você, com uma boa barra de progresso da GUI (embora mostrada como travada na maioria das vezes).
ADTC
Respostas:
144
Um objeto (blobs, árvores e confirmações) com o SHA diz - 810cae53e0f622d6804f063c04a83dbc3a11b7ca será armazenado em
(a divisão nos dois primeiros caracteres para melhorar o desempenho do sistema de arquivos, pois agora nem todos os objetos estão armazenados no mesmo diretório)
Os objetos armazenados como acima são chamados de objetos soltos.
Quando você inicia o seu repo, geralmente tem objetos soltos. À medida que o número aumenta, ele se torna ineficiente e eles são armazenados em um arquivo de pacote. Esses objetos são chamados de objetos compactados.
git gc
é o que você executa para empacotar objetos (geralmente objetos soltos que não são necessários e com poucas semanas de idade também são removidos e com a --prune=<date>opção você pode forçar a remoção de objetos soltos que não são mais necessários. Como quando você altera um commit. O antigo objeto de commit não é mais necessário.)
A --pruneopção é ativada por padrão e, como git gcé acionada automaticamente pelo uso comum (por exemplo commit), você normalmente não precisa se preocupar com isso. Eu não uso o git gui e não consigo encontrar exatamente onde é acionado na fonte, mas ele faz sua própria verificação ou apenas intercepta o gcacionado por um comando chamado. Certamente, não há nada com que se preocupar, apenas causado pelo uso normal.
Cascabel
21
existe alguma desvantagem em embalar objetos soltos? Caso contrário, por que o Git não faz isso automaticamente?
Louis Rhys
13
Não acho que isso aconteça automaticamente. I cometer muitas vezes, mas 'git gui' mencionado teve 50.000 objetos soltos (e têm sido perguntando por que git estava tão lento, grande projeto mais ~ 4 anos sem gc manual)
Kevin
1
@Kevin O desempenho do seu grande projeto melhorou após a execução git gcmanual? Eu acho que deveria melhorar, porque objetos soltos são ineficientes e 50.000 é um número muito grande. Também descobri que a embalagem reduz bastante o espaço usado pela .gitpasta.
ADTC
3
@LouisRhys, "Quando os objetos são gravados em disco, geralmente eles estão no formato livre, pois esse formato é mais barato de acessar. No entanto, eventualmente, você deseja economizar espaço ao empacotar os objetos" - do Git Book link na resposta abaixo
Objetos soltos são o formato mais simples. São simplesmente os dados compactados armazenados em um único arquivo no disco. Todo objeto gravado em um arquivo separado.
git gc
para você, com uma boa barra de progresso da GUI (embora mostrada como travada na maioria das vezes).Respostas:
Um objeto (blobs, árvores e confirmações) com o SHA diz - 810cae53e0f622d6804f063c04a83dbc3a11b7ca será armazenado em
(a divisão nos dois primeiros caracteres para melhorar o desempenho do sistema de arquivos, pois agora nem todos os objetos estão armazenados no mesmo diretório)
Os objetos armazenados como acima são chamados de objetos soltos.
Quando você inicia o seu repo, geralmente tem objetos soltos. À medida que o número aumenta, ele se torna ineficiente e eles são armazenados em um arquivo de pacote. Esses objetos são chamados de objetos compactados.
é o que você executa para empacotar objetos (geralmente objetos soltos que não são necessários e com poucas semanas de idade também são removidos e com a
--prune=<date>
opção você pode forçar a remoção de objetos soltos que não são mais necessários. Como quando você altera um commit. O antigo objeto de commit não é mais necessário.)fonte
--prune
opção é ativada por padrão e, comogit gc
é acionada automaticamente pelo uso comum (por exemplocommit
), você normalmente não precisa se preocupar com isso. Eu não uso o git gui e não consigo encontrar exatamente onde é acionado na fonte, mas ele faz sua própria verificação ou apenas intercepta ogc
acionado por um comando chamado. Certamente, não há nada com que se preocupar, apenas causado pelo uso normal.git gc
manual? Eu acho que deveria melhorar, porque objetos soltos são ineficientes e 50.000 é um número muito grande. Também descobri que a embalagem reduz bastante o espaço usado pela.git
pasta.O Git Book explica muito bem: https://git-scm.com/book/en/v2/Git-Internals-Packfiles
fonte