123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- git-send-pack(1)
- ================
- NAME
- ----
- git-send-pack - Push objects over Git protocol to another repository
- SYNOPSIS
- --------
- [verse]
- 'git send-pack' [--all] [--dry-run] [--force] [--receive-pack=<git-receive-pack>]
- [--verbose] [--thin] [--atomic]
- [--[no-]signed|--signed=(true|false|if-asked)]
- [<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.
- --stdin::
- Take the list of refs from stdin, one per line. If there
- are refs specified on the command line in addition to this
- option, then the refs from stdin are processed after those
- on the command line.
- +
- If `--stateless-rpc` is specified together with this option then
- the list of refs must be in packet format (pkt-line). Each ref must
- be in a separate packet, and the list must end with a flush packet.
- --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.
- --atomic::
- Use an atomic transaction for updating the refs. If any of the refs
- fails to update then the entire push will fail without changing any
- refs.
- --[no-]signed::
- --signed=(true|false|if-asked)::
- GPG-sign the push request to update refs on the receiving
- side, to allow it to be checked by the hooks and/or be
- logged. If `false` or `--no-signed`, no signing will be
- attempted. If `true` or `--signed`, the push will fail if the
- server does not support signed pushes. If set to `if-asked`,
- sign if and only if the server supports signed pushes. The push
- will also fail if the actual call to `gpg --sign` fails. See
- linkgit:git-receive-pack[1] for the details on the receiving end.
- --push-option=<string>::
- Pass the specified string as a push option for consumption by
- hooks on the server side. If the server doesn't support push
- options, error out. See linkgit:git-push[1] and
- linkgit:githooks[5] for details.
- <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 (whether on the
- command line or via `--stdin`), 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.
- GIT
- ---
- Part of the linkgit:git[1] suite
|