Last active
August 29, 2015 13:56
-
-
Save harssh-sparkway/9249702 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
exporting your repository | |
Previously there was a tip that covered sharing changes but that included all of your repository’s history. | |
What if you just want to export a certain commit’s changes? Or just one folder? What if you wanted to make | |
an archive of the repository for backup? | |
Fear not, for Git can do all that and more. Thanks to Stack Overflow for providing with some helpful hints to add into this post. | |
If your need is to just make a quick backup of your repository, doing a git archive will help. So if you wanted to get | |
zip file packed with your repository’s files: | |
git archive HEAD --format=zip > archive.zip | |
The archive command normally packages repos in tarballs, so you can easily pipe it to your favorite | |
data compression program: | |
git archive HEAD | gzip > archive.tar.gz | |
You can also archive a remote using the --remote=<repo> option. Just be aware that this does not work with | |
GitHub remotes, as they encourage you to use the download button instead. With any other remote it should work | |
fine though, and check the manpage if you’re having issues. | |
What if you don’t want a compressed version of the files? That’s possible too thanks to the checkout-index command. | |
Basically, it copies everything on your index into a different folder. Exporting your repo would then be: | |
git checkout-index -f -a --prefix=/path/to/folder/ | |
The -f option overwrites files, and the -a option means all files and folders. Just don’t forget the trailing slash on | |
the --prefix option, as it’s very important! Omitting it will make the command think you want to prefix every file name | |
with that argument instead. | |
If you wanted to just export a specific file or folder (in this case everything in the bin/ folder and the readme): | |
git checkout-index -f --prefix=/path/to/folder/ bin/* README.textile | |
Nice! You can also chain this command with find if you wanted to export all header files for example. Check out all | |
you can do with checkout-index at its manpage. Daniel Schierbeck has wrapped this process up into a little script | |
called git-export that is worth a look if you need to do this often. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment