210 votes

Quels sont les "loose objects" auxquels l'interface graphique de Git fait référence ?

Lorsque j'ouvre le Git GUI je reçois un message popup qui fait référence à loose objects . J'ai fait git gc et cela a supprimé le message.

Quels sont les loose objects et comment puis-je éviter que cela ne se reproduise ?

137voto

manojlds Points 96599

Un objet (blobs, arbres et commits) avec SHA say - 810cae53e0f622d6804f063c04a83dbc3a11b7ca sera stocké à

.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca

(la séparation des deux premiers caractères vise à améliorer les performances du système de fichiers, car tous les objets ne sont pas stockés dans le même répertoire).

Les objets stockés de la manière décrite ci-dessus sont appelés "objets en vrac".

Lorsque vous démarrez avec votre repo, vous avez surtout des objets libres. Lorsque leur nombre augmente, cela devient inefficace et ils sont stockés dans un fichier pack. De tels objets sont appelés objets packagés.

 git gc

est ce que vous utilisez pour emballer les objets (généralement, les objets en vrac qui ne sont pas nécessaires et qui datent de quelques semaines sont également enlevés). --prune=<date> vous pouvez forcer la suppression des objets détachés qui ne sont plus nécessaires. Comme lorsque vous modifiez un commit. L'ancien objet commit n'est plus nécessaire. )

38voto

Mohamed Mansour Points 18019

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 est écrit dans un fichier séparé.

5voto

ThomasS Points 1529

Le format initial dans lequel Git enregistre les objets sur le disque est appelé un format d'objet libre. Cependant, occasionnellement, Git regroupe plusieurs de ces objets dans un seul fichier binaire appelé packfile afin de gagner de l'espace et d'être plus efficace. Git fait cela si vous avez trop d'objets libres, si vous exécutez la commande git gc manuellement, ou si vous poussez vers un serveur distant. Pour voir ce qui se passe, vous pouvez demander manuellement à Git d'empaqueter les objets en appelant la commande git gc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X