Introduction
Sharing Git repositories typically involves pushing to a remote server or cloning via HTTP/SSH. But what if you need to share a repo without internet access? Enter git bundle
—a powerful Git command that packages a repository (or parts of it) into a single file for easy offline sharing.
A Git bundle is essentially a compressed file containing commits, branches, and tags, allowing you to transfer repositories via USB, email, or any offline medium. This is especially useful for:
- Sharing code in restricted environments
- Backing up repositories
- Distributing patches or updates
In this guide, we’ll explore how to use git bundle
, common use cases, and some tips to maximize its efficiency.
How to Use Git Bundle
1. Creating a Git Bundle
To bundle a repository, specify a range of commits (or a branch) and an output file:
git bundle create repo.bundle master
This creates repo.bundle
containing the entire master
branch.
Example: Bundling Specific Commits
git bundle create recent-changes.bundle HEAD~5..HEAD
This bundles only the last 5 commits from HEAD
.
2. Sharing and Unpacking a Bundle
Once you have the .bundle
file, transfer it to another machine and clone from it:
git clone repo.bundle -b master my-project
This extracts the bundle into a new repository (my-project
).
Example: Fetching Updates from a Bundle
If you already have a repo and want to apply changes from a bundle:
git fetch updates.bundle feature-branch:feature-branch
This fetches feature-branch
from updates.bundle
into your local repo.
Common Use Cases for Git Bundle
1. Offline Collaboration
When working in air-gapped environments (e.g., secure labs), git bundle
allows sharing code without direct Git server access.
2. Backup & Archiving
Instead of relying on remote servers, create periodic backups:
git bundle create backup-$(date +%Y-%m-%d).bundle --all
3. Partial Repository Transfer
Need only a specific feature branch? Bundle just that:
git bundle create feature-x.bundle origin/feature-x
4. Sending Patches via Email
Bundles can replace git format-patch
for larger changes:
git bundle create patch.bundle HEAD~3..HEAD
Email the bundle instead of multiple patch files.
Tips and Tricks
1. Verify Bundle Contents Before Applying
Check what’s inside a bundle:
git bundle verify repo.bundle
2. Bundle Only What’s Needed
Avoid large bundles by specifying commit ranges:
git bundle create small-bundle.bundle v1.0..v2.0
3. Use Tags for Versioned Bundles
Tag releases before bundling for clarity:
git tag v2.0
git bundle create release-v2.0.bundle v1.0..v2.0
4. Combine with git archive
for Code-Only Export
If you only need files (not Git history), use:
git archive --format=zip -o snapshot.zip HEAD
Conclusion
git bundle
is a versatile tool for sharing, backing up, and transferring Git repositories—especially in offline or restricted environments. Whether you need to:
- Share code without internet access
- Create backups
- Send patches efficiently
git bundle
provides a simple yet powerful solution.
Up Next in the Series: git replace
– Override commits without rewriting history (magic!)
Daily advance GIT tips in your inbox---worth starting? Respond to my poll here🚀
For more useful and innovative tips and tricks, Let's connect on Medium
Top comments (0)