Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.47.0 10/06/24
- 2.43.1 → 2.46.2 no changes
- 2.43.0 11/20/23
- 2.42.1 → 2.42.3 no changes
- 2.42.0 08/21/23
- 2.41.1 → 2.41.2 no changes
- 2.41.0 06/01/23
- 2.38.1 → 2.40.3 no changes
- 2.38.0 10/02/22
- 2.37.1 → 2.37.7 no changes
- 2.37.0 06/27/22
- 2.31.1 → 2.36.6 no changes
- 2.31.0 03/15/21
- 2.30.1 → 2.30.9 no changes
- 2.30.0 12/27/20
- 2.24.1 → 2.29.3 no changes
- 2.24.0 11/04/19
- 2.22.1 → 2.23.4 no changes
- 2.22.0 06/07/19
- 2.21.1 → 2.21.4 no changes
- 2.21.0 02/24/19
- 2.20.1 → 2.20.5 no changes
- 2.20.0 12/09/18
- 2.19.1 → 2.19.6 no changes
- 2.19.0 09/10/18
- 2.18.1 → 2.18.5 no changes
- 2.18.0 06/21/18
- 2.13.7 → 2.17.6 no changes
- 2.12.5 09/22/17
- 2.11.4 09/22/17
- 2.10.5 no changes
- 2.9.5 07/30/17
- 2.7.6 → 2.8.6 no changes
- 2.6.7 05/05/17
- 2.5.6 no changes
- 2.4.12 05/05/17
- 2.1.4 → 2.3.10 no changes
- 2.0.5 12/17/14
SYNOPSIS
git gc [--aggressive] [--auto] [--[no-]detach] [--quiet] [--prune=<date> | --no-prune] [--force] [--keep-largest-pack]
DESCRIPTION
ExĂ©cute un certain nombre de tâches mĂ©nagères dans le dĂ©pĂ´t actuel, comme la compression des rĂ©visions de fichiers (pour rĂ©duire l’espace disque et augmenter les performances), la suppression des objets inaccessibles qui peuvent avoir Ă©tĂ© crĂ©Ă©s par des invocations antĂ©rieures de git add, l’empaquetage des rĂ©fĂ©rences, l’Ă©lagage des mĂ©tadonnĂ©es reflog, rerere ou des arbres-de-travail pĂ©rimĂ©s. Peut Ă©galement mettre Ă jour des index auxiliaires tels que le commit-graph.
Quand les opĂ©rations courantes de porcelaine qui crĂ©ent des objets sont exĂ©cutĂ©es, elles vĂ©rifieront si le dĂ©pĂ´t a grandi de façon substantielle depuis la dernière maintenance, et si c’est le cas, elles lanceront automatiquement git gc
. Voir gc.auto
ci-dessous pour savoir comment désactiver ce comportement.
Exécuter git gc
manuellement ne devrait ĂŞtre nĂ©cessaire que lors de l’ajout d’objets Ă un dĂ©pĂ´t sans exĂ©cuter rĂ©gulièrement de telles commandes de porcelaine, pour faire une optimisation ponctuelle du dĂ©pĂ´t, ou par exemple pour nettoyer un import de masse sous-optimal. Voir la section "OPTIMISATION DU DÉPĂ”T" dans git-fast-import[1] pour plus de dĂ©tails sur le cas de l’importation.
OPTIONS
- --aggressive
-
Habituellement, git gc fonctionne très rapidement tout en fournissant une bonne utilisation de l’espace disque et de bonnes performances. Avec cette option, git gc optimisera le dĂ©pĂ´t de manière plus agressive, au prix d’un temps d’exĂ©cution beaucoup plus long. Les effets de cette optimisation sont principalement persistants. Voir la section "AGGRESSIVE" ci-dessous pour plus de dĂ©tails.
- --auto
-
Avec cette option, git gc vĂ©rifie si un mĂ©nage est nĂ©cessaire ; si ce n’est pas le cas, il quitte sans effectuer de travail.
Voir l’option
gc.auto
dans la section "CONFIGURATION" ci-dessous pour savoir comment fonctionne cette heuristique.Une fois que le ménage est déclenché par le dépassement des limites des options de configuration telles que
gc.auto
etgc.autoPackLimit
, toutes les autres tâches de mĂ©nage (par exemple rerere, working trees, reflog…) seront Ă©galement effectuĂ©es. - --[no-]detach
-
Lancer en arrière-plan si le système le gère. Cette option remplace la configuration
gc.autoDetach
. - --[no-]cruft
-
Lors de la pĂ©remption d’objets inaccessibles, les emballer sĂ©parĂ©ment dans un paquet comprimĂ© au lieu de les stocker en vrac.
--cruft
est activé par défaut. - --max-cruft-size=<n>
-
Lors de l’emballage d’objets inaccessibles dans un paquet dĂ©chet, limiter la taille de nouveaux paquets dĂ©chets Ă au plus`n` octets. Renvoie toute valeur spĂ©cifiĂ©e par la configuration
gc.maxCruftSize
. Voir l’option--max-cruft-size
de git-repack[1] pour plus de détails. - --prune=<date>
-
Éliminer les objets perdus plus anciens que la date (par défaut, il y a 2 semaines, modifiable par la variable de configuration
gc.pruneExpire
). --prune=now élague les objets perdus quel que soit leur âge et augmente le risque de corruption si un autre processus écrit dans le dépôt en même temps ; voir "NOTES" ci-dessous. --prune est activé par défaut. - --no-prune
-
Ne pas supprimer les objets esseulés.
- --quiet
-
Supprimer les rapports d’avancement.
- --force
-
Force
git gc
Ă s’exĂ©cuter mĂŞme s’il y a une autre instance degit gc
qui tourne sur ce dépôt. - --keep-largest-pack
-
Tous les paquets Ă l’exception du plus gros paquet non cruft, tous les paquets marquĂ©s avec un fichier
.keep
, et tous les paquets cruft sont consolidés en un seul paquet. Lorsque cette option est utilisée,gc.bigPackThreshold
est ignoré.
AGGRESSIVE
Quand l’option --aggressive
est fournie, git-repack[1] sera invoquĂ© avec l’option -f
, qui Ă son tour passera --no-reuse-delta
à git-pack-objects[1]. Cela jettera tous les deltas existants et les recalculera, au prix de passer beaucoup plus de temps sur le ré-empaquetage.
Les effets de ceci sont principalement persistants, par exemple lorsque des paquets et des objets libres sont fusionnĂ©s dans un autre paquet, les deltas existants dans ce paquet peuvent ĂŞtre rĂ©utilisĂ©s, mais il y a aussi plusieurs cas oĂą nous pouvons choisir un delta sous-optimal d’un paquet plus rĂ©cent Ă la place.
De plus, fournir --aggressive
modifiera les options --depth
et --window
passées à git-repack[1]. Voir les paramètres gc.aggressiveDepth
et gc.aggressiveWindow
ci-dessous. En utilisant une taille de fenĂŞtre plus grande, nous avons plus de chances de trouver des deltas plus optimaux.
Il n’est probablement pas utile d’utiliser cette option sur un dĂ©pĂ´t donnĂ© sans effectuer des tests de performance sur mesure. Cela prend beaucoup plus de temps, et l’optimisation de l’espace/delta qui en rĂ©sulte peut ou non en valoir la peine. Ne pas l’utiliser du tout est le bon compromis pour la plupart des utilisateurs et leurs dĂ©pĂ´ts.
CONFIGURATION
Warning
|
Missing See original version for this content. |
Warning
|
Missing See original version for this content. |
NOTES
git gc' s’efforce de ne pas supprimer les objets qui sont rĂ©fĂ©rencĂ©s n’importe oĂą dans votre dĂ©pĂ´t. En particulier, il conservera non seulement les objets rĂ©fĂ©rencĂ©s par votre ensemble actuel de branches et de tags, mais aussi les objets rĂ©fĂ©rencĂ©s par l’index, les branches de suivi Ă distance, les reflogs (qui peuvent rĂ©fĂ©rencer des commits dans des branches qui ont Ă©tĂ© modifiĂ©es ou remontĂ©es ultĂ©rieurement), et tout ce qui se trouve dans l’espace de nom refs/*. Notez qu’une note (du type de celle crĂ©Ă©e par git notes) attachĂ©e Ă un objet ne contribue pas Ă maintenir l’objet en vie. Si vous vous attendez Ă ce que certains objets soient supprimĂ©s et qu’ils ne le sont pas, vĂ©rifiez tous ces emplacements et dĂ©cidez si cela a un sens dans votre cas de supprimer ces rĂ©fĂ©rences.
D’autre part, lorsque git gc s’exĂ©cute en mĂŞme temps qu’un autre processus, il y a un risque qu’il supprime un objet que l’autre processus utilise mais auquel il n’a pas crĂ©Ă© de rĂ©fĂ©rence. Cela peut simplement faire Ă©chouer l’autre processus ou corrompre le dĂ©pĂ´t si l’autre processus ajoute plus tard une rĂ©fĂ©rence Ă l’objet supprimĂ©. Git possède deux fonctionnalitĂ©s qui attĂ©nuent considĂ©rablement ce problème :
-
Tout objet dont la date de modification est plus récente que la date
--prune
est conservé, ainsi que tout ce qui est accessible depuis cet objet. -
La plupart des opĂ©rations qui ajoutent un objet Ă la base de donnĂ©es mettent Ă jour l’heure de modification de l’objet s’il est dĂ©jĂ prĂ©sent, de sorte que le numĂ©ro 1 s’applique.
Toutefois, ces fonctionnalitĂ©s ne constituent pas une solution complète, de sorte que les utilisateurs qui exĂ©cutent des commandes simultanĂ©ment doivent s’accommoder d’un certain risque de corruption (qui semble faible en pratique).
CROCHETS
La commande git gc --auto peut lancer le crochet pre-auto-gc
. Voir githooks[5] pour de plus amples informations.
GIT
Fait partie de la suite git[1]
TRADUCTION
Cette page de manuel a été traduite par Jean-Noël Avila <jn.avila AT free DOT fr> et les membres du projet git-manpages-l10n. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le site https://github.com/jnavila/git-manpages-l10n .