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