Pour supprimer tous pendre s'engage et ceux accessibles à partir de la reflogs ce faire:
git reflog expire --expire-unreachable=now --all
git gc --prune=now
Mais soyez certains que c'est ce que vous voulez. Je vous recommande de lire les pages de manuel, mais voici l'essentiel:
git gc
supprime inaccessible objets (les livraisons, les arbres, les blobs (fichiers)). Un objet est inaccessible si ce n'est pas une partie de l'histoire de l'une des branches. En fait c'est un peu plus compliqué:
git gc
fait quelques autres choses, mais ils ne sont pas pertinentes ici et pas dangereux.
Inaccessible objets qui sont âgés de moins de deux semaines ne sont pas supprimés, de sorte que nous utilisons --prune=now
ce qui signifie "enlever inaccessible objets qui ont été créés avant maintenant".
Les objets peuvent aussi être atteints à travers le reflog. Tandis que les branches d'enregistrer l'historique d'un projet, reflogs record de l'histoire de ces branches. Si vous modifier, reset etc. les commits sont retirés de l'histoire de la branche, mais git maintient autour au cas où vous vous rendez compte que vous avez fait une erreur. Reflogs sont un moyen pratique pour trouver ce que destructrice (et d'autres) les opérations ont été effectuées sur une branche (ou la TÊTE), ce qui rend plus facile pour annuler une opération destructrice.
Nous aussi nous devons supprimer la reflogs pour supprimer réellement tout n'est pas accessible à partir d'une branche. Nous le faisons en expirant --all
reflogs. Git tient un peu de la reflogs pour protéger les utilisateurs, donc nous avons à nouveau pour lui dire de ne pas le faire: --expire-unreachable=now
.
Depuis, j'utilise principalement le reflog pour récupérer les destructeurs des opérations que j'utilise habituellement --expire=now
au lieu de cela, ce qui zappe les reflogs complètement.