Autogenerated manpages for v2.41.0-rc0-4-g004e0
[git-manpages.git] / man1 / git-send-pack.1
blobc3fb8590ad5dc319aea2e12222c99612a9f19269
1 '\" t
2 .\"     Title: git-send-pack
3 .\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
4 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
5 .\"      Date: 2023-05-17
6 .\"    Manual: Git Manual
7 .\"    Source: Git 2.41.0.rc0.4.g004e0f790f
8 .\"  Language: English
9 .\"
10 .TH "GIT\-SEND\-PACK" "1" "2023\-05\-17" "Git 2\&.41\&.0\&.rc0\&.4\&.g00" "Git Manual"
11 .\" -----------------------------------------------------------------
12 .\" * Define some portability stuff
13 .\" -----------------------------------------------------------------
14 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15 .\" http://bugs.debian.org/507673
16 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
17 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
18 .ie \n(.g .ds Aq \(aq
19 .el       .ds Aq '
20 .\" -----------------------------------------------------------------
21 .\" * set default formatting
22 .\" -----------------------------------------------------------------
23 .\" disable hyphenation
24 .nh
25 .\" disable justification (adjust text to left margin only)
26 .ad l
27 .\" -----------------------------------------------------------------
28 .\" * MAIN CONTENT STARTS HERE *
29 .\" -----------------------------------------------------------------
30 .SH "NAME"
31 git-send-pack \- Push objects over Git protocol to another repository
32 .SH "SYNOPSIS"
33 .sp
34 .nf
35 \fIgit send\-pack\fR [\-\-mirror] [\-\-dry\-run] [\-\-force]
36                 [\-\-receive\-pack=<git\-receive\-pack>]
37                 [\-\-verbose] [\-\-thin] [\-\-atomic]
38                 [\-\-[no\-]signed | \-\-signed=(true|false|if\-asked)]
39                 [<host>:]<directory> (\-\-all | <ref>\&...)
40 .fi
41 .sp
42 .SH "DESCRIPTION"
43 .sp
44 Usually you would want to use \fIgit push\fR, which is a higher\-level wrapper of this command, instead\&. See \fBgit-push\fR(1)\&.
45 .sp
46 Invokes \fIgit\-receive\-pack\fR on a possibly remote repository, and updates it from the current repository, sending named refs\&.
47 .SH "OPTIONS"
48 .PP
49 \-\-receive\-pack=<git\-receive\-pack>
50 .RS 4
51 Path to the
52 \fIgit\-receive\-pack\fR
53 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\&.
54 .RE
55 .PP
56 \-\-exec=<git\-receive\-pack>
57 .RS 4
58 Same as \-\-receive\-pack=<git\-receive\-pack>\&.
59 .RE
60 .PP
61 \-\-all
62 .RS 4
63 Instead of explicitly specifying which refs to update, update all heads that locally exist\&.
64 .RE
65 .PP
66 \-\-stdin
67 .RS 4
68 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\&.
69 .sp
71 \fB\-\-stateless\-rpc\fR
72 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\&.
73 .RE
74 .PP
75 \-\-dry\-run
76 .RS 4
77 Do everything except actually send the updates\&.
78 .RE
79 .PP
80 \-\-force
81 .RS 4
82 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\&.
83 .RE
84 .PP
85 \-\-verbose
86 .RS 4
87 Run verbosely\&.
88 .RE
89 .PP
90 \-\-thin
91 .RS 4
92 Send a "thin" pack, which records objects in deltified form based on objects not included in the pack to reduce network traffic\&.
93 .RE
94 .PP
95 \-\-atomic
96 .RS 4
97 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\&.
98 .RE
99 .PP
100 \-\-[no\-]signed, \-\-signed=(true|false|if\-asked)
101 .RS 4
102 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
103 \fBfalse\fR
105 \fB\-\-no\-signed\fR, no signing will be attempted\&. If
106 \fBtrue\fR
108 \fB\-\-signed\fR, the push will fail if the server does not support signed pushes\&. If set to
109 \fBif\-asked\fR, sign if and only if the server supports signed pushes\&. The push will also fail if the actual call to
110 \fBgpg \-\-sign\fR
111 fails\&. See
112 \fBgit-receive-pack\fR(1)
113 for the details on the receiving end\&.
116 \-\-push\-option=<string>
117 .RS 4
118 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
119 \fBgit-push\fR(1)
121 \fBgithooks\fR(5)
122 for details\&.
125 <host>
126 .RS 4
127 A remote host to house the repository\&. When this part is specified,
128 \fIgit\-receive\-pack\fR
129 is invoked via ssh\&.
132 <directory>
133 .RS 4
134 The repository to update\&.
137 <ref>\&...
138 .RS 4
139 The remote refs to update\&.
141 .SH "SPECIFYING THE REFS"
143 There are three ways to specify which refs to update on the remote end\&.
145 With \fB\-\-all\fR flag, all refs that exist locally are transferred to the remote side\&. You cannot specify any \fI<ref>\fR if you use this flag\&.
147 Without \fB\-\-all\fR and without any \fI<ref>\fR, the heads that exist both on the local side and on the remote side are updated\&.
149 When one or more \fI<ref>\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 pattern separated by a colon ":" (this means that a ref name cannot have a colon in it)\&. A single pattern \fI<name>\fR is just a shorthand for \fI<name>:<name>\fR\&.
151 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)\&.
153 .RS 4
154 .ie n \{\
155 \h'-04'\(bu\h'+03'\c
157 .el \{\
158 .sp -1
159 .IP \(bu 2.3
161 It is an error if <src> does not match exactly one of the local refs\&.
164 .RS 4
165 .ie n \{\
166 \h'-04'\(bu\h'+03'\c
168 .el \{\
169 .sp -1
170 .IP \(bu 2.3
172 It is an error if <dst> matches more than one remote refs\&.
175 .RS 4
176 .ie n \{\
177 \h'-04'\(bu\h'+03'\c
179 .el \{\
180 .sp -1
181 .IP \(bu 2.3
183 If <dst> does not match any remote ref, either
185 .RS 4
186 .ie n \{\
187 \h'-04'\(bu\h'+03'\c
189 .el \{\
190 .sp -1
191 .IP \(bu 2.3
193 it has to start with "refs/"; <dst> is used as the destination literally in this case\&.
196 .RS 4
197 .ie n \{\
198 \h'-04'\(bu\h'+03'\c
200 .el \{\
201 .sp -1
202 .IP \(bu 2.3
204 <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\&.
208 Without \(oq\-\-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\(cq commits from there\&.
210 With \fB\-\-force\fR, the fast\-forward check is disabled for all refs\&.
212 Optionally, a <ref> parameter can be prefixed with a plus \fI+\fR sign to disable the fast\-forward check only on that ref\&.
213 .SH "GIT"
215 Part of the \fBgit\fR(1) suite