Question

À quelle fréquence devriez-vous utiliser git-gc?

L' page de manuel dit simplement:

Les utilisateurs sont encouragés à exécuter cette tâche sur une base régulière à l'intérieur de chaque référentiel de maintenir une bonne utilisation de l'espace disque et de la bonne performance de l'exploitation.

Y at-il des commandes pour obtenir certains objets compte pour savoir si il est temps de gc?

Était-ce utile?

La solution

Il dépend principalement de la façon dont beaucoup le référentiel est utilisé.Avec un contrôle de l'utilisateur dans une fois par jour et une branche/fusionner/etc opération une fois par semaine, vous n'avez probablement pas besoin de le lancer plus d'une fois par année.

Avec plusieurs dizaines de développeurs qui travaillent sur plusieurs dizaines de projets de chaque vérification en 2 ou 3 fois par jour, vous pouvez exécuter tous les soirs.

Il ne fera pas de mal à courir plus souvent que nécessaire, même s'.

Ce que je voudrais faire est d'exécuter maintenant, puis une semaine à partir de maintenant, prendre une mesure de l'utilisation du disque, exécutez de nouveau, et de mesurer l'utilisation du disque à nouveau.Si elle tombe à 5% dans la taille, puis de l'exécuter une fois par semaine.Si elle descend de plus, puis de plus en plus fréquemment.Si elle tombe moins, puis moins fréquemment.

Autres conseils

Notez que la baisse des déchets-collecte de votre référentiel, c'est que, eh bien, la poubelle obtient recueillies.Comme nous le savons tous que les utilisateurs de l'ordinateur, les fichiers nous considérons ordures maintenant pourrait s'avérer très précieux trois jours dans le futur.Le fait que git conserve la plupart de ses débris autour qui a sauvé mon bacon plusieurs fois, en parcourant tous les balançant s'engage, j'ai récupéré beaucoup de travail que j'avais accidentellement en conserve.

Afin de ne pas être trop ordonné dans votre privé clones.Il y a peu de besoin.

Otoh, que, la valeur de la récupération des données est discutable pour le repos utilisé principalement comme des télécommandes, par exemple.le lieu de tous les développeurs de pousser et/ou tiré de.Là, il pourrait être judicieux pour le coup d'envoi d'une table, d'exécuter et de réemballage fréquemment.

Les versions récentes d'exécuter git gc automatiquement lorsque nécessaire, donc vous ne devriez pas avoir à faire quoi que ce soit.Voir la section Options de l'homme git-gc(1):"Certaines commandes git git gc --auto après avoir effectué les opérations qui pourraient créer de nombreux objets en vrac."

Si vous êtes en utilisant Git-Gui, il vous dit lorsque vous devriez vous inquiéter:

This repository currently has approximately 1500 loose objects.

La commande suivante va apporter un nombre similaire:

$ git count-objects

Sauf, à partir de sa source, git-gui à faire le calcul en lui-même, qui compte quelque chose à .git/objects dossier et probablement apporte une approximation (je ne sais pas tcl pour bien lu!).

En tout cas, c' semble pour donner l'alerte basé sur un nombre arbitraire autour de 300 objets en vrac.

Déposez dans une tâche cron qui s'exécute tous les soirs (après-midi?) lorsque vous dormez.

J'utilise git gc après j'ai fait une grosse caisse, et avons beaucoup de nouveaux objets.il peut économiser de l'espace.E. g.si vous commander un grand projet SVN en utilisant git-svn, et de faire un git gc, vous économiser beaucoup d'espace

Vous pouvez le faire sans aucune interruption, avec la nouvelle (Git 2.0 T2 2014) réglage de gc.autodetach.

Voir s'engager 4c4ac4d et s'engager 9f673f9 (Nguyễn Thái Ngọc Duy, aka pclouds):

gc --auto prend du temps et peut bloquer l'utilisateur temporairement (mais pas le moins gênant).
Le faire fonctionner en arrière-plan sur les systèmes qui le supportent.
La seule chose perdue avec cours d'exécution en arrière-plan d'impression.Mais gc output n'est pas vraiment intéressant.
Vous pouvez le garder au premier plan par l'évolution de la gc.autodetach.


Depuis la version 2.0, il y avait un bug si:git 2.7 (Q4 2015) assurez-vous de ne pas perdre le message d'erreur.
Voir s'engager 329e6e8 (19 Sep 2015) par Nguyễn Thái Ngọc Duy (pclouds).
(Fusionnés par Junio C Hamano -- gitster -- dans s'engager 076c827, 15 Oct 2015)

gc:enregistrer le journal de automatiquement gc --auto et imprimer la prochaine fois

Alors que s'engager 9f673f9 (gc:option de configuration pour l'exécution de --auto en arrière - plan- 2014-02-08) permet de réduire quelques plaintes au sujet de 'gc --auto'monopolisant le terminal, il en crée une autre série de problèmes.

La dernière de cette série est, comme le résultat de daemonizing, stderr est fermé et tous les avertissements sont perdus.Cet avertissement à la fin de cmd_gc() est particulièrement important car il indique à l'utilisateur comment l'éviter "gc --auto"en cours d'exécution à plusieurs reprises.
Parce que stderr est fermé, l'utilisateur ne sait pas, naturellement, ils se plaignent de 'gc --auto'gaspiller de l'UC.

Automatiquement gc maintenant sauve stderr pour $GIT_DIR/gc.log.
La suite gc --auto ne fonctionne pas, et gc.log imprimé jusqu'à ce que l'utilisateur supprime gc.log
.

Cette citation est tirée de;Le Contrôle de Version avec Git

Git fonctionne la collecte des ordures automatiquement:

• Si il y a trop d'objets en vrac dans le référentiel

• Lorsqu'un push à un dépôt distant qui se passe

• Après quelques commandes qui peuvent présenter de nombreux objets en vrac

• Lorsque certaines commandes comme git reflog expirer la demande explicite

Et enfin, la collecte des ordures se produit lorsque vous la demande explicite à l'aide de git gc commande.Mais quand doit-il être?Il n'y a pas solide la réponse à cette question, mais il est de bons conseils et des meilleures de pratique.

Vous devriez envisager d'exécuter git gc manuellement en quelques situations:

• Si vous venez de terminer un git filter-branch .Rappelons que filter-branch réécrit de nombreuses engage, introduit de nouveaux, et les feuilles les anciens sur une ref qui doivent être supprimés lorsque vous êtes satisfait avec les résultats.Tous ces objets morts (qui ne sont plus référencé puisque vous venez de retirer une ref pointant vers eux) devraient être supprimées par l'intermédiaire de la collecte des ordures.

• Après quelques commandes qui peuvent présenter de nombreux objets en vrac.Cette peut-être un grand rebase effort, par exemple.

Et sur le revers de la médaille, quand faut-il se méfier de la collecte des ordures?

• Si il y a des orphelins refs que vous souhaitez récupérer

• Dans le contexte de git rerere et vous n'avez pas besoin d'enregistrer le résolutions pour toujours

• Dans le contexte de seulement les étiquettes et les branches étant suffisante pour provoquer Git pour conserver un commit en permanence

• Dans le contexte de FETCH_HEAD ponctions (URL directe extractions via git fetch ) parce qu'ils sont immédiatement soumises à la collecte des déchets

• Dans le contexte de seulement les étiquettes et les branches étant suffisante pour provoquer Git pour conserver un commit en permanence

• Dans le contexte de FETCH_HEAD ponctions (URL directe extractions via git fetch ) parce qu'ils sont immédiatement soumises à la collecte des déchets

J'utilise lorsque je fais un gros commettre, surtout quand je supprimer plusieurs fichiers à partir du référentiel..après, les changements sont plus rapides

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top