Git Bundle and Git Archive Commands — How to Use Them
Git bundle and Git archive commands aren’t broadly known, but they can serve a variety of purposes.
What Is Git Bundle?
Git bundle is a command that converts your full repository into a single file. Using this command can improve your workflow, allowing you to replicate one or more branches.
What Is Git Archive?
Git archive is a command that creates an archive of files from a named tree. Using this command can be a useful way to export your repository.
Git Bundle vs. Git Archive
Both Git bundle and Git archive provide the means to output portions of a repository:
Git archive sends only the specified file contents to the standard output.
Git bundle creates a single file containing both file contents and history.
The Biggest Difference Between Them
The difference between Git bundle and Git archive is whether the contents of the .git folder are included. Git archive excludes the contents of the .git folder, while Git bundle includes it.
From a practical standpoint, these commands serve a variety of purposes. They can:
- Back up just the files in a single sourcetree (e.g., the head revision).
- Back up the entire repository.
- Transfer a branch to secure machines that have no network connections.
How to Use Git Archive and Git Bundle
Git Archive for Files
The Git archive command archives all the contents of the current HEAD into a file named HeadArchive.zip. Because the prefix option is given, it does this under a folder named “2014-10-21” in the archive. The available list of formats can be retrieved with the git archive --list command.
git archive --prefix=2014-10-21/ --format=zip HEAD >HeadArchive.zip
But the Git archive command includes only the files, not the history of those files.
Git Bundle for Files and Their History
If you want to package files and their history, you want the Git bundle command instead. Consider the following example:
git bundle create HeadBundle.git HEAD
That command will create a single file named HeadBundle.git that contains not only the entire file contents of the current HEAD, but it also includes all the history and versioning metadata as well. As such, a bundle serves as a complete copy of the specified data.
Git Bundle to Clone a New Repository
You can use Git bundle clone a new repository:
git clone HeadBundle.git ~/test
That command will create a clone of the contents of the bundle in a new test folder. Other options let you verify the contents of a bundle and list the contents.
By establishing a clear convention for tagging, the bundle command even makes it possible to transfer incremental changes regularly at a given time interval.
What's the Best Way to Manage Your Files?
Using Git commands like Git bundle and Git archive help you manage your files and repository. While these commands add efficiency, they aren't the best way to manage your files.
Perforce Helix Core gives you a better way to manage everything — code, binary files, digital assets, and more –– all in one. Plus, Helix Core works with Git. Developers can continue using Git, and the code can be replicated back to a single server. Having a single source of truth ensures that your Git data is always protected without needing to bundle or archive anything.
See for yourself why using Perforce is the best way to manage all your files.