git download archive for give remote and tag download archive for give remote and tag. Creates an archive of the specified format containing the tree structure for the named tree, and writes it out to the standard output. If is specified it is prepended to the filenames in the archive. git archive behaves differently when given a tree ID versus when given a ID or tag ID. In the first case the current time is used as the modification time of each file in the archive. In the latter case the commit time as recorded in the referenced commit object is used instead. Additionally the commit ID is stored in a global extended pax header if the tar format is used; it can be extracted using git get-tar-commit-id . In ZIP files it is stored as a file comment. OPTIONS. Format of the resulting archive: tar or zip . If this option is not given, and the output file is specified, the format is inferred from the filename if possible (e.g. writing to "foo.zip" makes the output to be in the zip format). Otherwise the output format is tar . Show all available formats. Report progress to stderr. Prepend / to each filename in the archive. Write the archive to instead of stdout. Add a non-tracked file to the archive. Can be repeated to add multiple files. The path of the file in the archive is built by concatenating the value for --prefix (if any) and the basename of . Look for attributes in .gitattributes files in the working tree as well (see ATTRIBUTES). This can be any options that the archiver backend understands. See next section. Instead of making a tar archive from the local repository, retrieve a tar archive from a remote repository. Note that the remote repository may place restrictions on which sha1 expressions may be allowed in . See git-upload-archive[1] for details. Used with --remote to specify the path to the git-upload-archive on the remote side. The tree or commit to produce an archive for. Without an optional path parameter, all files and subdirectories of the current working directory are included in the archive. If one or more paths are specified, only these are included. BACKEND EXTRA OPTIONS. Store the files instead of deflating them. Highest and slowest compression level. You can specify any number from 1 to 9 to adjust compression speed and ratio. CONFIGURATION. This variable can be used to restrict the permission bits of tar archive entries. The default is 0002, which turns off the world write bit. The special value "user" indicates that the archiving user’s umask will be used instead. See umask(2) for details. If --remote is used then only the configuration of the remote repository takes effect. This variable specifies a shell command through which the tar output generated by git archive should be piped. The command is executed using the shell with the generated tar file on its standard input, and should produce the final output on its standard output. Any compression-level options will be passed to the command (e.g., "-9"). An output file with the same extension as will be use this format if no other format is given. The "tar.gz" and "tgz" formats are defined automatically and default to gzip -cn . You may override them with custom commands. If true, enable for use by remote clients via git-upload-archive[1]. Defaults to false for user-defined formats, but true for the "tar.gz" and "tgz" formats. ATTRIBUTES. Files and directories with the attribute export-ignore won’t be added to archive files. See gitattributes[5] for details. If the attribute export-subst is set for a file then Git will expand several placeholders when adding this file to an archive. See gitattributes[5] for details. Note that attributes are by default taken from the .gitattributes files in the tree that is being archived. If you want to tweak the way the output is generated after the fact (e.g. you committed without adding an appropriate export-ignore in its .gitattributes ), adjust the checked out .gitattributes file as necessary and use --worktree-attributes option. Alternatively you can keep necessary attributes that should apply while archiving any tree in your $GIT_DIR/info/attributes file. EXAMPLES. Create a tar archive that contains the contents of the latest commit on the current branch, and extract it in the /var/tmp/junk directory. git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz. Create a compressed tarball for v1.4.0 release. git archive --format=tar.gz --prefix=git-1.4.0/ v1.4.0 >git-1.4.0.tar.gz. Same as above, but using the builtin tar.gz handling. git archive --prefix=git-1.4.0/ -o git-1.4.0.tar.gz v1.4.0. Same as above, but the format is inferred from the output file. git archive --format=tar --prefix=git-1.4.0/ v1.4.0^ | gzip >git-1.4.0.tar.gz. Create a compressed tarball for v1.4.0 release, but without a global extended pax header. git archive --format=zip --prefix=git-docs/ HEAD:Documentation/ > git-1.4.0-docs.zip. Put everything in the current head’s Documentation/ directory into git-1.4.0-docs.zip , with the prefix git-docs/ . git archive -o latest.zip HEAD. Create a Zip archive that contains the contents of the latest commit on the current branch. Note that the output format is inferred by the extension of the output file. git-archive a subdirectory -- I'm using git-archive to archive a subdirectory in a git repo, like so: However the resulting archive maintains the subdir/ directory structure, i.e. the contents are: When I actually want whatever.js and morestuff.js at the root of the archive. 1 Answer 1. You can do that like this: By the way, an easy way to play with the command and see what it will generate is if you use it in this form: Once you see what you're looking for, you can change the format and use the -o flag to actually create the archive. git export from github remote repository. I'd like to export from github remote repository, not cloning it. Similar to svn export, I do not want to get .git folder with it. I can work around it by cloning and removing .git folder. I wonder if there is a cleaner way? I read it somewhere you can use git archive to achieve this. However I got the following errors.. Any help would be great. Thanks. 10 Answers 10. Thanks to the Subversion support by GitHub, you can use svn export to get the project without any files: Notice the URL format: The base URL is https://github.com/ USERNAME/PROJECTNAME without .git / appended at the end. This way you can get branches and subdirectories too. This creates a directory with the exported files. It's not possible to create a tar/zip directly, you have to do in two steps (export + zip). This is a limitation of svn export itself. As @Jon pointed out, this will create the export in a directory named trunk by default. You can specify a different name if you prefer: You can use this technique to export any sub-directory of the project. For example if you want only some/path , you can do: You can get paths from branches and tags too. The endpoint https://github.com/username/projectname behaves fully as a Subversion repository with a regular layout, so you will find branches in https://github.com/username/projectname/branches and tags in https://github.com/username/projectname/tags . Before you export something large by mistake, it's good to check first the content of the path. You can do that using svn ls , for example: # Archive. With git archive it is possible to create compressed archives of a repository, for example for distributing releases. Create a tar archive of current HEAD revision: Create a tar archive of current HEAD revision with gzip compression: This can also be done with (which will use the in-built tar.gz handling): Create a zip archive of current HEAD revision: Alternatively it is possible to just specify an output file with valid extension and the format and compression type will be inferred from it: # Create an archive of git repository with directory prefix. It is considered good practice to use a prefix when creating git archives, so that extraction will place all files inside a directory. To create an archive of HEAD with a directory prefix: When extracted all the files will be extracted inside a directory named src-directory-name in the current directory. # Create archive of git repository based on specific branch, revision, tag or directory. It is also possible to create archives of other items than HEAD , such as branches, commits, tags, and directories. To create an archive of a local branch dev : To create an archive of a remote branch origin/dev : To create an archive of a tag v.01 : Create an archive of files inside a specific sub directory ( sub-dir ) of revision HEAD : # Syntax. git archive [--format= ][--list] [--prefix= /][ ] [-o | --output= ][--worktree-attributes] [--remote= [ --exec= ]] [ Git Archive: How to export a git project. Sometimes it can be useful to create an archive file of a Git repository. An archive file combines multiple files into a single file. An archive file can then be extracted to reproduce the individual files. Git is incredibly powerful at preserving history and team collaboration; however, archive files remove the overhead of Git's metadata and can be simpler to distribute to other users or preserve in long term cold storage. What does git archive do? The git archive command is a Git command line utility that will create an archive file from specified Git Refs like, commits, branches, or trees. git archive accepts additional arguments that will alter the archive output. Git export examples. This command when executed will create an archive from the current HEAD ref of the repository. By default, git archive will stream the archive output to the ephemeral stdout stream. You will need to capture this output stream to a permanent file. You can specify a permanent file by using git archives output option or using the operating systems stdout redirection. The proceeding example will create a new archive and store it in the exmaple_repo_archive.tar file. The previous examples have both created uncompressed archive output. This is denoted by the --format=tar option. The format option also accepts popular compressed file formats zip and tar.gz . Passing one of these format options will produce a compressed archive. If a format value is not passed it will be inferred from any --output option passed. A partial archives of the repository can be created by passing a path argument. This example adds a ./build path argument to the archive command. This command will output an archive containing only files stored under the ./build directory. Options. The previous examples demonstrated some of the most frequently used git-archive use cases. The following are extended options that can be passed to git-archive . The prefix options prepends a path to each file in an archive. This can be helpful to ensure the archive contents get extracted in a unique namespace. The remote option expects a remote repository URL. When invoked with the remote option, git-archive will fetch the remote repository and create an archive from the specified ref if it’s available on the remote. Configuration. There are a few global Git configuration values that. will respect. These values can be set using the [git config][link to git config] utility. The unmask configuration option is used to specify unix level permission bit restriction on the output archive file. This configuration option allows specification of a custom shell command that the git-archive output will be run through. This is similar to omitting the --output option and piping the stdout stream from. to a custom tool. This enables fixed custom archive post-processing. If enabled this allows remote clients to fetch archives of type format . Git Archive Summary. Git archive is a helpful utility for creating distributable packages of git repositories. Git archive can target specific refs of a repository and only package the contents of that ref. Git archive has several output formats that can utilize added compression.