Comme Jefromi commenté Dan réponse, git gc
devrait être appelé automatiquement appelé lors d'une utilisation "normale" d'un dépôt nu.
J'ai juste couru git gc --aggressive
sur les deux nus, les dépôts communs qui ont été activement utilisé; l'un avec environ 38 engage les 3 ou 4 dernières semaines, et l'autre avec environ 488 s'engage pendant environ 3 mois. Personne n'a exécuter manuellement git gc
sur le référentiel.
Les petits référentiel
$ git count-objects
333 objects, 595 kilobytes
$ git count-objects -v
count: 333
size: 595
in-pack: 0
packs: 0
size-pack: 0
prune-packable: 0
garbage: 0
$ git gc --aggressive
Counting objects: 325, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (323/323), done.
Writing objects: 100% (325/325), done.
Total 325 (delta 209), reused 0 (delta 0)
Removing duplicate objects: 100% (256/256), done.
$ git count-objects -v
count: 8
size: 6
in-pack: 325
packs: 1
size-pack: 324
prune-packable: 0
garbage: 0
$ git count-objects
8 objects, 6 kilobytes
Répertoire plus grand
$ git count-objects
4315 objects, 11483 kilobytes
$ git count-objects -v
count: 4315
size: 11483
in-pack: 9778
packs: 20
size-pack: 15726
prune-packable: 1395
garbage: 0
$ git gc --aggressive
Counting objects: 8548, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (8468/8468), done.
Writing objects: 100% (8548/8548), done.
Total 8548 (delta 7007), reused 0 (delta 0)
Removing duplicate objects: 100% (256/256), done.
$ git count-objects -v
count: 0
size: 0
in-pack: 8548
packs: 1
size-pack: 8937
prune-packable: 0
garbage: 0
$ git count-objects
0 objects, 0 kilobytes
Je souhaite que je l'avais pensé, avant j' gc
ed ces deux référentiels, mais je devrais avoir exécuté git gc
sans l' --aggressive
option pour voir la différence. Heureusement, j'ai une taille moyenne active référentiel de gauche à essai (164 s'engage sur près de 2 mois).
$ git count-objects -v
count: 1279
size: 1574
in-pack: 2078
packs: 6
size-pack: 2080
prune-packable: 607
garbage: 0
$ git gc
Counting objects: 1772, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (1073/1073), done.
Writing objects: 100% (1772/1772), done.
Total 1772 (delta 1210), reused 1050 (delta 669)
Removing duplicate objects: 100% (256/256), done.
$ git count-objects -v
count: 0
size: 0
in-pack: 1772
packs: 1
size-pack: 1092
prune-packable: 0
garbage: 0
$ git gc --aggressive
Counting objects: 1772, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (1742/1742), done.
Writing objects: 100% (1772/1772), done.
Total 1772 (delta 1249), reused 0 (delta 0)
$ git count-objects -v
count: 0
size: 0
in-pack: 1772
packs: 1
size-pack: 1058
prune-packable: 0
garbage: 0
L'exécution git gc
clairement fait une grande brèche dans count-objects
, même si nous avons régulièrement des push
et fetch
à partir de ce dépôt. Mais à la lecture de la page de manuel pour git config
,, j'ai remarqué que, par défaut, lâche l'objet de la limite est de 6700, qui apparemment n'avait pas encore atteint.
Il semble donc que la conclusion est non, vous n'avez pas besoin d'exécuter git gc
manuellement sur un nu-les opérations de pension;* mais avec le réglage par défaut de gc.auto
, il pourrait être un long moment avant de la collecte des ordures se fait automatiquement.
*En général, vous ne devriez pas exécuter git gc
. Mais parfois, vous pourriez être à court d'espace et que vous devez exécuter git gc
manuellement ou gc.auto
à une valeur inférieure. Mon cas pour la question était simple curiosité, si.