Q: You need to deliver a Git repo to an air-gapped environment with no network. How do you transfer commits?
Use git bundle — it packages Git objects into a single file that can be copied via USB, email, or any file-transfer mechanism:
🛠️ Production Runbook & Step-by-Step Resolution
Initial Diagnostics & Root Cause Analysis
Use git bundle — it packages Git objects into a single file that can be copied via USB, email, or any file-transfer mechanism:
- Air-gapped/classified environments (government, defense, healthcare).
- Transferring repos between disconnected networks.
- Backups — a bundle is a self-contained snapshot of the entire repo.
Remediation & Permanent Safeguards
Creating a bundle (on the source machine): Using the bundle (on the air-gapped machine): How it works: A bundle is essentially a packfile with a header listing the refs it contains and the prerequisite commits it assumes the receiver already has. git bundle verify checks that the receiver has those prerequisites. Use cases: The incremental approach (v1.5..main) keeps bundles small by only including new commits. For regular transfers, maintain a marker tag at each delivery point.
# Bundle everything:
git bundle create repo.bundle --all
# Bundle only new commits since a tag:
git bundle create update.bundle v1.5..main
- Bootstrapping repos on machines where installing Git hosting is impractical.
- Air-gapped/classified environments (government, defense, healthcare).
- Transferring repos between disconnected networks.
- Backups — a bundle is a self-contained snapshot of the entire repo.