|  | git-send-pack(1) | 
|  | ================ | 
|  |  | 
|  | NAME | 
|  | ---- | 
|  | git-send-pack - Push objects over git protocol to another repository | 
|  |  | 
|  |  | 
|  | SYNOPSIS | 
|  | -------- | 
|  | 'git send-pack' [--all] [--dry-run] [--force] [--receive-pack=<git-receive-pack>] [--verbose] [--thin] [<host>:]<directory> [<ref>...] | 
|  |  | 
|  | DESCRIPTION | 
|  | ----------- | 
|  | Usually you would want to use 'git push', which is a | 
|  | higher-level wrapper of this command, instead. See linkgit:git-push[1]. | 
|  |  | 
|  | Invokes 'git-receive-pack' on a possibly remote repository, and | 
|  | updates it from the current repository, sending named refs. | 
|  |  | 
|  |  | 
|  | OPTIONS | 
|  | ------- | 
|  | --receive-pack=<git-receive-pack>:: | 
|  | Path to the 'git-receive-pack' program on the remote | 
|  | end.  Sometimes useful when pushing to a remote | 
|  | repository over ssh, and you do not have the program in | 
|  | a directory on the default $PATH. | 
|  |  | 
|  | --exec=<git-receive-pack>:: | 
|  | Same as \--receive-pack=<git-receive-pack>. | 
|  |  | 
|  | --all:: | 
|  | Instead of explicitly specifying which refs to update, | 
|  | update all heads that locally exist. | 
|  |  | 
|  | --dry-run:: | 
|  | Do everything except actually send the updates. | 
|  |  | 
|  | --force:: | 
|  | Usually, the command refuses to update a remote ref that | 
|  | is not an ancestor of the local ref used to overwrite it. | 
|  | This flag disables the check.  What this means is that | 
|  | the remote repository can lose commits; use it with | 
|  | care. | 
|  |  | 
|  | --verbose:: | 
|  | Run verbosely. | 
|  |  | 
|  | --thin:: | 
|  | Send a "thin" pack, which records objects in deltified form based | 
|  | on objects not included in the pack to reduce network traffic. | 
|  |  | 
|  | <host>:: | 
|  | A remote host to house the repository.  When this | 
|  | part is specified, 'git-receive-pack' is invoked via | 
|  | ssh. | 
|  |  | 
|  | <directory>:: | 
|  | The repository to update. | 
|  |  | 
|  | <ref>...:: | 
|  | The remote refs to update. | 
|  |  | 
|  |  | 
|  | Specifying the Refs | 
|  | ------------------- | 
|  |  | 
|  | There are three ways to specify which refs to update on the | 
|  | remote end. | 
|  |  | 
|  | With '--all' flag, all refs that exist locally are transferred to | 
|  | the remote side.  You cannot specify any '<ref>' if you use | 
|  | this flag. | 
|  |  | 
|  | Without '--all' and without any '<ref>', the heads that exist | 
|  | both on the local side and on the remote side are updated. | 
|  |  | 
|  | When one or more '<ref>' are specified explicitly, it can be either a | 
|  | single pattern, or a pair of such pattern separated by a colon | 
|  | ":" (this means that a ref name cannot have a colon in it).  A | 
|  | single pattern '<name>' is just a shorthand for '<name>:<name>'. | 
|  |  | 
|  | Each pattern pair consists of the source side (before the colon) | 
|  | and the destination side (after the colon).  The ref to be | 
|  | pushed is determined by finding a match that matches the source | 
|  | side, and where it is pushed is determined by using the | 
|  | destination side. The rules used to match a ref are the same | 
|  | rules used by 'git rev-parse' to resolve a symbolic ref | 
|  | name. See linkgit:git-rev-parse[1]. | 
|  |  | 
|  | - It is an error if <src> does not match exactly one of the | 
|  | local refs. | 
|  |  | 
|  | - It is an error if <dst> matches more than one remote refs. | 
|  |  | 
|  | - If <dst> does not match any remote ref, either | 
|  |  | 
|  | * it has to start with "refs/"; <dst> is used as the | 
|  | destination literally in this case. | 
|  |  | 
|  | * <src> == <dst> and the ref that matched the <src> must not | 
|  | exist in the set of remote refs; the ref matched <src> | 
|  | locally is used as the name of the destination. | 
|  |  | 
|  | Without '--force', the <src> ref is stored at the remote only if | 
|  | <dst> does not exist, or <dst> is a proper subset (i.e. an | 
|  | ancestor) of <src>.  This check, known as "fast-forward check", | 
|  | is performed in order to avoid accidentally overwriting the | 
|  | remote ref and lose other peoples' commits from there. | 
|  |  | 
|  | With '--force', the fast-forward check is disabled for all refs. | 
|  |  | 
|  | Optionally, a <ref> parameter can be prefixed with a plus '+' sign | 
|  | to disable the fast-forward check only on that ref. | 
|  |  | 
|  |  | 
|  | Author | 
|  | ------ | 
|  | Written by Linus Torvalds <torvalds@osdl.org> | 
|  |  | 
|  | Documentation | 
|  | -------------- | 
|  | Documentation by Junio C Hamano. | 
|  |  | 
|  | GIT | 
|  | --- | 
|  | Part of the linkgit:git[1] suite |