Je cherche les informations de base sur les commits & blobs pendantes.
Mon repo semble bien. Mais j'ai couru git fsck
pour la première fois pour voir ce que cela a fait et j'ai une longue liste de 'blobs en suspens' et un seul 'commit en suspens'.
Quelles sont ces choses? D'où viennent-ils? Est-ce qu'ils indiquent quelque chose d'inhabituel (bon ou mauvais) sur l'état de mon repo?
Au cours de votre travail avec votre référentiel git, il est possible que vous finissiez par annuler vos opérations et que vous effectuiez d'autres actions qui génèrent des blobs intermédiaires, voire certaines actions que git fait pour vous afin d'éviter toute perte d'informations.
Finalement (conditionnellement, selon le page de manuel de git gc ), il effectuera un nettoyage de la mémoire et nettoiera ces informations. Vous pouvez également le forcer en appelant le processus de récupération de place, git gc
.
Pour plus d'informations à ce sujet, voir Maintenance et récupération de données sur le site git-scm.
Une exécution manuelle du CPG laissera par défaut 2 semaines avant l'exécution de cette commande d'un filet de sécurité. En fait, il est conseillé de lancer le GC occasionnellement pour assurer une utilisation performante de votre référentiel git. Cependant, comme pour toute chose, vous devez comprendre ce qu’il fait avant de détruire les choses qui peuvent être importantes pour vous.
Blob en suspens = Un changement qui a été ajouté à la zone/index de transfert, mais n'a jamais été validé. Une chose qui est incroyable avec git, c'est qu'une fois ajouté dans la zone de préparation, vous pouvez toujours le récupérer car ces blobs se comportent comme des commits, en ce sens qu'ils ont aussi un hash !!
Dangling commit = Un commit qui n'est pas directement lié à un commit, une branche, une balise ou une autre référence enfant. Vous pouvez les récupérer aussi!
HOWTO supprime tous les commits en attente de votre dépôt git de http://www.tekkie.ro/news/howto-remove-all-dangling-commits-from-your-git-repository/
git reflog expire --expire=now --all
git gc --Prune=now
Assurez-vous de vouloir vraiment les supprimer, car vous pourriez décider de les utiliser après tout.