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