git-upload-archive - Man Page

Send archive back to git-archive

Synopsis

git upload-archive <repository>

Description

Invoked by git archive --remote and sends a generated archive to the other end over the Git protocol​.

This command is usually not invoked directly by the end user​. The UI for the protocol is on the git archive side, and the program pair is meant to be used to get an archive from a remote repository​.

Security

In order to protect the privacy of objects that have been removed from history but may not yet have been pruned, git-upload-archive avoids serving archives for commits and trees that are not reachable from the repository’s refs​. However, because calculating object reachability is computationally expensive, git-upload-archive implements a stricter but easier-to-check set of rules:

  1. Clients may request a commit or tree that is pointed to directly by a ref​. E​.g​., git archive --remote=origin v1​.0​.
  2. Clients may request a sub-tree within a commit or tree using the ref:path syntax​. E​.g​., git archive --remote=origin v1​.0:Documentation​.
  3. Clients may not use other sha1 expressions, even if the end result is reachable​. E​.g​., neither a relative commit like master^ nor a literal sha1 like abcd1234 is allowed, even if the result is reachable from the refs​.

Note that rule 3 disallows many cases that do not have any privacy implications​. These rules are subject to change in future versions of git, and the server accessed by git archive --remote may or may not follow these exact rules​.

If the config option uploadArchive​.allowUnreachable is true, these rules are ignored, and clients may use arbitrary sha1 expressions​. This is useful if you do not care about the privacy of unreachable objects, or if your object database is already publicly available for access via non-smart-http​.

Options

<repository>

The repository to get a tar archive from​.

Git

Part of the git(1) suite

Info

09/28/2026 Git 2.56.0 Git Manual