Published on

TIL: Add your git repo to a tarball


Today I learned that you can neatly pack all the files in your git repository into a tarball:

git archive --format=tar -o my_repo.tar -v HEAD

The best thing about this is it will automatically honour your .gitignore file, so won't include any files you don't care about.

Other formats

It also works with zip files:

git archive --format=zip -o my_repo.zip -v HEAD

Excluding files

In order to exclude files from the archive, you can specify them in a .gitattributes file. Here's an example that excludes the README.md file from the export:

README.md export-ignore

Including the git repo itself

It doesn't include the git repository itself (the .git directory). If you'd like to include it, you can run:

git archive --format=tar -o my_repo.tar -v HEAD
tar -rf my_repo.tar .git