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