]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-send-pack.txt
Documentation/git-send-pack.txt: wrap long synopsis line
[thirdparty/git.git] / Documentation / git-send-pack.txt
CommitLineData
2a245013
JH
1git-send-pack(1)
2================
2a245013
JH
3
4NAME
5----
2de9b711 6git-send-pack - Push objects over Git protocol to another repository
2a245013
JH
7
8
9SYNOPSIS
10--------
7791a1d9 11[verse]
a3fb31a8
DB
12'git send-pack' [--all] [--dry-run] [--force] [--receive-pack=<git-receive-pack>]
13 [--verbose] [--thin] [--atomic]
14 [<host>:]<directory> [<ref>...]
2a245013
JH
15
16DESCRIPTION
17-----------
0b444cdb 18Usually you would want to use 'git push', which is a
483bc4f0 19higher-level wrapper of this command, instead. See linkgit:git-push[1].
5cb545fa 20
ba020ef5 21Invokes 'git-receive-pack' on a possibly remote repository, and
ab9b3138 22updates it from the current repository, sending named refs.
2a245013
JH
23
24
25OPTIONS
26-------
3240240f 27--receive-pack=<git-receive-pack>::
ba020ef5 28 Path to the 'git-receive-pack' program on the remote
2a245013
JH
29 end. Sometimes useful when pushing to a remote
30 repository over ssh, and you do not have the program in
31 a directory on the default $PATH.
32
3240240f 33--exec=<git-receive-pack>::
1c262bb7 34 Same as --receive-pack=<git-receive-pack>.
d23842fd 35
3240240f 36--all::
9553d20b 37 Instead of explicitly specifying which refs to update,
5c633a4c 38 update all heads that locally exist.
9553d20b 39
26be19ba
JK
40--stdin::
41 Take the list of refs from stdin, one per line. If there
42 are refs specified on the command line in addition to this
43 option, then the refs from stdin are processed after those
44 on the command line.
45+
46If '--stateless-rpc' is specified together with this option then
47the list of refs must be in packet format (pkt-line). Each ref must
48be in a separate packet, and the list must end with a flush packet.
49
3240240f 50--dry-run::
a63103ae
BE
51 Do everything except actually send the updates.
52
3240240f 53--force::
ab9b3138
JH
54 Usually, the command refuses to update a remote ref that
55 is not an ancestor of the local ref used to overwrite it.
56 This flag disables the check. What this means is that
57 the remote repository can lose commits; use it with
58 care.
59
3240240f 60--verbose::
18bd8821
UKK
61 Run verbosely.
62
3240240f 63--thin::
738820a9
SB
64 Send a "thin" pack, which records objects in deltified form based
65 on objects not included in the pack to reduce network traffic.
18bd8821 66
4ff17f10
RS
67--atomic::
68 Use an atomic transaction for updating the refs. If any of the refs
69 fails to update then the entire push will fail without changing any
70 refs.
71
2a245013
JH
72<host>::
73 A remote host to house the repository. When this
ba020ef5 74 part is specified, 'git-receive-pack' is invoked via
2a245013
JH
75 ssh.
76
77<directory>::
78 The repository to update.
79
23bed43d 80<ref>...::
9553d20b
JH
81 The remote refs to update.
82
83
84Specifying the Refs
85-------------------
86
87There are three ways to specify which refs to update on the
88remote end.
89
abda1ef5 90With '--all' flag, all refs that exist locally are transferred to
ab9b3138 91the remote side. You cannot specify any '<ref>' if you use
9553d20b
JH
92this flag.
93
5c633a4c 94Without '--all' and without any '<ref>', the heads that exist
9553d20b
JH
95both on the local side and on the remote side are updated.
96
26be19ba
JK
97When one or more '<ref>' are specified explicitly (whether on the
98command line or via `--stdin`), it can be either a
9553d20b 99single pattern, or a pair of such pattern separated by a colon
df8baa42 100":" (this means that a ref name cannot have a colon in it). A
9553d20b 101single pattern '<name>' is just a shorthand for '<name>:<name>'.
ab9b3138 102
9553d20b 103Each pattern pair consists of the source side (before the colon)
ab9b3138 104and the destination side (after the colon). The ref to be
9553d20b
JH
105pushed is determined by finding a match that matches the source
106side, and where it is pushed is determined by using the
ae36bdcf 107destination side. The rules used to match a ref are the same
0b444cdb 108rules used by 'git rev-parse' to resolve a symbolic ref
483bc4f0 109name. See linkgit:git-rev-parse[1].
9553d20b 110
ab9b3138
JH
111 - It is an error if <src> does not match exactly one of the
112 local refs.
9553d20b
JH
113
114 - It is an error if <dst> matches more than one remote refs.
115
116 - If <dst> does not match any remote ref, either
117
df8baa42 118 * it has to start with "refs/"; <dst> is used as the
9553d20b
JH
119 destination literally in this case.
120
df8baa42 121 * <src> == <dst> and the ref that matched the <src> must not
9553d20b
JH
122 exist in the set of remote refs; the ref matched <src>
123 locally is used as the name of the destination.
124
ab9b3138
JH
125Without '--force', the <src> ref is stored at the remote only if
126<dst> does not exist, or <dst> is a proper subset (i.e. an
a75d7b54 127ancestor) of <src>. This check, known as "fast-forward check",
ab9b3138
JH
128is performed in order to avoid accidentally overwriting the
129remote ref and lose other peoples' commits from there.
130
a75d7b54 131With '--force', the fast-forward check is disabled for all refs.
ab9b3138
JH
132
133Optionally, a <ref> parameter can be prefixed with a plus '+' sign
134to disable the fast-forward check only on that ref.
135
2a245013
JH
136GIT
137---
9e1f0a85 138Part of the linkgit:git[1] suite