git bundle
Empaqueter des commits et des branches dans un seul fichier
La commande 'git bundle' empaquette commits, branches et tags dans un seul fichier. Ce fichier se comporte comme un dépôt distant : on peut cloner ou faire un fetch depuis lui. C’est ainsi qu’on déplace un dépôt sans réseau — sur une clé USB, par e-mail, dans un réseau isolé. Un bundle incrémental (A..B) ne contient que les commits récents et exige les plus anciens côté réception.
Synopsis
git bundle create <file> <git-rev-list-args>
git bundle verify <file>
git bundle list-heads <file>
git bundle unbundle <file>Options
Choisir la bonne option
Façons de déplacer un dépôt
Avec et sans réseau
| Commande | Réseau nécessaire |
|---|---|
git push / git clone <url> | Oui |
git bundle + copy the file | No |
Exemples
Empaqueter une branche
git bundle create shop.bundle mainTous les commits de main.
Cloner depuis lui
git clone shop.bundle shopUn dépôt à partir du fichier.
Incrémental
git bundle create update.bundle v1.0..mainSeulement les commits après v1.0.
Exemples de workflows
git bundle create shop.bundle --allTout empaqueter
git clone shop.bundle shopLe déballer sur l’autre ordinateur
Dépannage
error: Repository lacks these prerequisite commits
Cause : Le bundle est incrémental
Obtenez un bundle complet, ou récupérez d’abord l’historique manquant
Astuces et pièges
Bonnes pratiques
- ✓Lancez git bundle verify avant d’envoyer un bundle.
Erreurs fréquentes
- ✗Créer un bundle incrémental pour quelqu’un à qui manquent les anciens commits — verify indique ce qui est requis.
FAQ
Il peut l’être : git bundle create backup.bundle --all capture chaque branche et chaque tag.