'\" t .\" Title: git-send-pack .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 01/05/2024 .\" Manual: Git Manual .\" Source: Git 2.43.0.381.gb435a96ce8 .\" Language: English .\" .TH "GIT\-SEND\-PACK" "1" "01/05/2024" "Git 2\&.43\&.0\&.381\&.gb435a9" "Git Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" git-send-pack \- Push objects over Git protocol to another repository .SH "SYNOPSIS" .sp .nf \fIgit send\-pack\fR [\-\-mirror] [\-\-dry\-run] [\-\-force] [\-\-receive\-pack=] [\-\-verbose] [\-\-thin] [\-\-atomic] [\-\-[no\-]signed | \-\-signed=(true|false|if\-asked)] [:] (\-\-all | \&...) .fi .sp .SH "DESCRIPTION" .sp Usually you would want to use \fIgit push\fR, which is a higher\-level wrapper of this command, instead\&. See \fBgit-push\fR(1)\&. .sp Invokes \fIgit\-receive\-pack\fR on a possibly remote repository, and updates it from the current repository, sending named refs\&. .SH "OPTIONS" .PP \-\-receive\-pack= .RS 4 Path to the \fIgit\-receive\-pack\fR 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\&. .RE .PP \-\-exec= .RS 4 Same as \-\-receive\-pack=\&. .RE .PP \-\-all .RS 4 Instead of explicitly specifying which refs to update, update all heads that locally exist\&. .RE .PP \-\-stdin .RS 4 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\&. .sp If \fB\-\-stateless\-rpc\fR 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\&. .RE .PP \-\-dry\-run .RS 4 Do everything except actually send the updates\&. .RE .PP \-\-force .RS 4 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\&. This means that the remote repository can lose commits; use it with care\&. .RE .PP \-\-verbose .RS 4 Run verbosely\&. .RE .PP \-\-thin .RS 4 Send a "thin" pack, which records objects in deltified form based on objects not included in the pack to reduce network traffic\&. .RE .PP \-\-atomic .RS 4 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\&. .RE .PP \-\-[no\-]signed, \-\-signed=(true|false|if\-asked) .RS 4 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 \fBfalse\fR or \fB\-\-no\-signed\fR, no signing will be attempted\&. If \fBtrue\fR or \fB\-\-signed\fR, the push will fail if the server does not support signed pushes\&. If set to \fBif\-asked\fR, sign if and only if the server supports signed pushes\&. The push will also fail if the actual call to \fBgpg \-\-sign\fR fails\&. See \fBgit-receive-pack\fR(1) for the details on the receiving end\&. .RE .PP \-\-push\-option= .RS 4 Pass the specified string as a push option for consumption by hooks on the server side\&. If the server doesn\(cqt support push options, error out\&. See \fBgit-push\fR(1) and \fBgithooks\fR(5) for details\&. .RE .PP .RS 4 A remote host to house the repository\&. When this part is specified, \fIgit\-receive\-pack\fR is invoked via ssh\&. .RE .PP .RS 4 The repository to update\&. .RE .PP \&... .RS 4 The remote refs to update\&. .RE .SH "SPECIFYING THE REFS" .sp There are three ways to specify which refs to update on the remote end\&. .sp With the \fB\-\-all\fR flag, all refs that exist locally are transferred to the remote side\&. You cannot specify any \fI\fR if you use this flag\&. .sp Without \fB\-\-all\fR and without any \fI\fR, the heads that exist both on the local side and on the remote side are updated\&. .sp When one or more \fI\fR are specified explicitly (whether on the command line or via \fB\-\-stdin\fR), it can be either a single pattern, or a pair of such patterns separated by a colon ":" (this means that a ref name cannot have a colon in it)\&. A single pattern \fI\fR is just shorthand for \fI:\fR\&. .sp 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 \fIgit rev\-parse\fR to resolve a symbolic ref name\&. See \fBgit-rev-parse\fR(1)\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} It is an error if does not match exactly one of the local refs\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} It is an error if matches more than one remote ref\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} If does not match any remote ref, either .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} it has to start with "refs/"; is used as the destination literally in this case\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} == and the ref that matched the must not exist in the set of remote refs; the ref matched locally is used as the name of the destination\&. .RE .RE .sp Without \fB\-\-force\fR, the ref is stored at the remote only if does not exist, or is a proper subset (i\&.e\&. an ancestor) of \&. This check, known as the "fast\-forward check", is performed to avoid accidentally overwriting the remote ref and losing other people\(cqs commits from there\&. .sp With \fB\-\-force\fR, the fast\-forward check is disabled for all refs\&. .sp Optionally, a parameter can be prefixed with a plus \fI+\fR sign to disable the fast\-forward check only on that ref\&. .SH "GIT" .sp Part of the \fBgit\fR(1) suite