Réponses:
Un objet (blobs, arbres et validations) avec SHA, dit - 810cae53e0f622d6804f063c04a83dbc3a11b7ca sera stocké dans
.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca
(la division en deux premiers caractères pour améliorer les performances du système de fichiers car maintenant tous les objets ne sont pas stockés dans le même répertoire)
Les objets stockés comme ci-dessus sont appelés objets lâches.
Lorsque vous démarrez avec votre repo, vous avez surtout des objets en vrac. Lorsque le nombre augmente, il devient inefficace et ils sont stockés dans un fichier pack. Ces objets sont appelés objets emballés.
git gc
est ce que vous exécutez pour emballer les objets (les objets généralement non utilisés qui ne sont pas nécessaires et qui datent de quelques semaines sont également supprimés et avec l' --prune=<date>
option, vous pouvez forcer la suppression des objets non utilisés qui ne sont plus nécessaires. Comme lorsque vous modifiez un commit. L'ancien objet commit n'est pas plus nécessaire.)
--prune
option est activée par défaut, et comme elle git gc
est automatiquement déclenchée par une utilisation courante (par exemple commit
), vous n'avez généralement pas à vous en soucier. Je n'utilise pas git gui, et je ne peux pas trouver exactement où il est déclenché dans la source, mais soit il effectue sa propre vérification, soit intercepte simplement le gc
déclenché par une commande appelée. Ce n'est certainement rien à craindre, juste causé par une utilisation normale.
git gc
manuelle? Je pense que cela devrait s'améliorer, car les objets en vrac sont inefficaces, et 50 000 est un très grand nombre. J'ai également découvert que l'emballage réduit également considérablement l'espace utilisé par le .git
dossier.
Le Git Book l'explique assez bien: https://git-scm.com/book/en/v2/Git-Internals-Packfiles
Les objets en vrac sont le format le plus simple. Il s'agit simplement des données compressées stockées dans un seul fichier sur le disque. Chaque objet écrit dans un fichier séparé.
git gc
pour vous, avec une belle barre de progression GUI (bien qu'elle soit affichée comme bloquée la plupart du temps).