Posso apagar arquivos que foram adicionados mas não comprometidos com o git?

3

O Git parece reter os blobs adicionados, mas não comprometidos

#> mkdir foo
#> cd foo
#> echo a > data.txt
#> git add data.txt
#> find .git/objects
.git/objects/58/7be6b4c3f93f93c489c0111bba5596147a26cb

Agora mude o conteúdo.

#> echo b > data.txt
#> git add data.txt
#> find .git/objects
.git/objects/61/780798228d17af2d34fce4cfbdf35556832472
.git/objects/58/7be6b4c3f93f93c489c0111bba5596147a26cb

Nós não precisamos mais de 58/7be6b4c3f93f93c489c0111bba5596147a26cb , não é?

#> git commit -m 'first'
#> find ./git/objects
.git/objects/c0/eef182819e5c530c407ca17a24e39cb6682ed3
.git/objects/61/780798228d17af2d34fce4cfbdf35556832472
.git/objects/58/7be6b4c3f93f93c489c0111bba5596147a26cb
.git/objects/70/a6a81a455bea58166d60d21060b074d3271b6a

O órfão 58/7be6b4c3f93f93c489c0111bba5596147a26cb ainda está lá.

Eu fiz git add em vários arquivos que foram alterados antes de serem confirmados. Posso remover os blobs que não são mais referenciados pelo índice?

    
por spraff 27.10.2016 / 20:02

1 resposta

1

Eu não vejo nenhum motivo para você não conseguir, e git parece concordar: A execução de git fsck --unreachable mostra como nó pendente, e git prune --dry-run mostra que ele será removido.

Eu não o executaria manualmente (em um cenário de trabalho / recompra normal) - o comando git gc tem exatamente esse objetivo: (de link )

Runs a number of housekeeping tasks within the current repository, such as compressing file revisions (to reduce disk space and increase performance) and removing unreachable objects which may have been created from prior invocations of git add.

Users are encouraged to run this task on a regular basis within each repository to maintain good disk space utilization and good operating performance.

    
por 27.10.2016 / 23:05

Tags