blob: 6150b1b959e17655a2875d39ec3b70449684a0eb [file] [log] [blame]
Junio C Hamano1a4e8412005-12-27 08:17:231git-push(1)
2===========
3
4NAME
5----
Junio C Hamano01078922006-03-10 00:31:476git-push - Update remote refs along with associated objects
Junio C Hamano1a4e8412005-12-27 08:17:237
8
9SYNOPSIS
10--------
Junio C Hamanoa9b8d242007-05-19 04:51:5511[verse]
Junio C Hamanoa476efa2008-10-10 15:31:4212'git push' [--all | --mirror] [--dry-run] [--tags] [--receive-pack=<git-receive-pack>]
13 [--repo=<repository>] [-f | --force] [-v | --verbose]
Junio C Hamano7f80ae82008-07-30 18:31:3514 [<repository> <refspec>...]
Junio C Hamano1a4e8412005-12-27 08:17:2315
16DESCRIPTION
17-----------
18
19Updates remote refs using local refs, while sending objects
20necessary to complete the given refs.
21
Junio C Hamano40f2f8d2006-02-07 08:04:3922You can make interesting things happen to a repository
Junio C Hamano1a4e8412005-12-27 08:17:2323every time you push into it, by setting up 'hooks' there. See
Junio C Hamano35738e82008-01-07 07:55:4624documentation for linkgit:git-receive-pack[1].
Junio C Hamano1a4e8412005-12-27 08:17:2325
26
27OPTIONS
28-------
Junio C Hamano40f2f8d2006-02-07 08:04:3929<repository>::
30The "remote" repository that is destination of a push
31operation. See the section <<URLS,GIT URLS>> below.
32
Junio C Hamano7f80ae82008-07-30 18:31:3533<refspec>...::
Junio C Hamanofaa1e502008-08-10 03:55:5834The canonical format of a <refspec> parameter is
35`+?<src>:<dst>`; that is, an optional plus `{plus}`, followed
Junio C Hamano40f2f8d2006-02-07 08:04:3936by the source ref, followed by a colon `:`, followed by
37the destination ref.
38+
Junio C Hamanoa9aee782008-04-23 16:09:2039The <src> side represents the source branch (or arbitrary
40"SHA1 expression", such as `master~4` (four parents before the
41tip of `master` branch); see linkgit:git-rev-parse[1]) that you
42want to push. The <dst> side represents the destination location.
Junio C Hamano40f2f8d2006-02-07 08:04:3943+
44The local ref that matches <src> is used
Junio C Hamanoa9aee782008-04-23 16:09:2045to fast forward the remote ref that matches <dst> (or, if no <dst> was
46specified, the same ref that <src> referred to locally). If
47the optional leading plus `+` is used, the remote ref is updated
Junio C Hamano40f2f8d2006-02-07 08:04:3948even if it does not result in a fast forward update.
49+
Junio C Hamano3f403b02006-12-13 10:14:1350`tag <tag>` means the same as `refs/tags/<tag>:refs/tags/<tag>`.
Junio C Hamano40f2f8d2006-02-07 08:04:3951+
Junio C Hamano6926bef2007-06-16 09:54:0552A parameter <ref> without a colon pushes the <ref> from the source
53repository to the destination repository under the same name.
Junio C Hamano3f403b02006-12-13 10:14:1354+
55Pushing an empty <src> allows you to delete the <dst> ref from
56the remote repository.
Junio C Hamanob713ff12008-05-24 01:12:3057+
58The special refspec `:` (or `+:` to allow non-fast forward updates)
59directs git to push "matching" heads: for every head that exists on
60the local side, the remote side is updated if a head of the same name
61already exists on the remote side. This is the default operation mode
62if no explicit refspec is found (that is neither on the command line
63nor in any Push line of the corresponding remotes file---see below).
Junio C Hamano1a4e8412005-12-27 08:17:2364
Junio C Hamanoeb415992008-06-08 22:49:4765--all::
Junio C Hamano40f2f8d2006-02-07 08:04:3966Instead of naming each ref to push, specifies that all
Junio C Hamanod2d9ae12007-09-19 02:27:5767refs under `$GIT_DIR/refs/heads/` be pushed.
Junio C Hamano1a4e8412005-12-27 08:17:2368
Junio C Hamanoeb415992008-06-08 22:49:4769--mirror::
Junio C Hamano9d2bbb72007-11-25 04:56:0770Instead of naming each ref to push, specifies that all
Junio C Hamanoa351d142008-06-21 09:40:4071refs under `$GIT_DIR/refs/` (which includes but is not
72limited to `refs/heads/`, `refs/remotes/`, and `refs/tags/`)
Junio C Hamano9d2bbb72007-11-25 04:56:0773be mirrored to the remote repository. Newly created local
74refs will be pushed to the remote end, locally updated refs
75will be force updated on the remote end, and deleted refs
Junio C Hamano47d68a52008-05-06 06:35:4076will be removed from the remote end. This is the default
77if the configuration option `remote.<remote>.mirror` is
78set.
Junio C Hamano9d2bbb72007-11-25 04:56:0779
Junio C Hamanoeb415992008-06-08 22:49:4780--dry-run::
Junio C Hamano764a6672007-10-23 01:23:3181Do everything except actually send the updates.
82
Junio C Hamanoeb415992008-06-08 22:49:4783--tags::
Junio C Hamano02d6fa52006-01-16 08:23:2384All refs under `$GIT_DIR/refs/tags` are pushed, in
85addition to refspecs explicitly listed on the command
86line.
87
Junio C Hamanoeb415992008-06-08 22:49:4788--receive-pack=<git-receive-pack>::
Junio C Hamanoba4b9282008-07-06 05:20:3189Path to the 'git-receive-pack' program on the remote
Junio C Hamano1ce39ab2007-01-16 22:05:1090end. Sometimes useful when pushing to a remote
91repository over ssh, and you do not have the program in
92a directory on the default $PATH.
93
Junio C Hamanoeb415992008-06-08 22:49:4794--exec=<git-receive-pack>::
Junio C Hamano4ad294b2007-01-20 02:22:5095Same as \--receive-pack=<git-receive-pack>.
96
Junio C Hamanoeb415992008-06-08 22:49:4797-f::
98--force::
Junio C Hamano560a1f62006-01-30 04:19:5799Usually, the command refuses to update a remote ref that is
Junio C Hamano4cd1c0e2007-08-06 04:39:14100not an ancestor of the local ref used to overwrite it.
Junio C Hamano560a1f62006-01-30 04:19:57101This flag disables the check. This can cause the
102remote repository to lose commits; use it with care.
Junio C Hamano1a4e8412005-12-27 08:17:23103
Junio C Hamanoa476efa2008-10-10 15:31:42104--repo=<repository>::
105This option is only relevant if no <repository> argument is
106passed in the invocation. In this case, 'git-push' derives the
107remote name from the current branch: If it tracks a remote
108branch, then that remote repository is pushed to. Otherwise,
109the name "origin" is used. For this latter case, this option
110can be used to override the name "origin". In other words,
111the difference between these two commands
112+
113--------------------------
114git push public #1
115git push --repo=public #2
116--------------------------
117+
118is that #1 always pushes to "public" whereas #2 pushes to "public"
119only if the current branch does not track a remote branch. This is
120useful if you write an alias or script around 'git-push'.
Junio C Hamano1ce39ab2007-01-16 22:05:10121
Junio C Hamanoeb415992008-06-08 22:49:47122--thin::
123--no-thin::
Junio C Hamanoba4b9282008-07-06 05:20:31124These options are passed to 'git-send-pack'. Thin
Junio C Hamano1ce39ab2007-01-16 22:05:10125transfer spends extra cycles to minimize the number of
126objects to be sent and meant to be used on slower connection.
127
Junio C Hamanoeb415992008-06-08 22:49:47128-v::
129--verbose::
Junio C Hamano1ce39ab2007-01-16 22:05:10130Run verbosely.
131
Junio C Hamano330aae62007-07-06 17:01:58132include::urls-remotes.txt[]
Junio C Hamano1a4e8412005-12-27 08:17:23133
Junio C Hamano6d559fc2008-02-20 10:44:26134OUTPUT
135------
136
137The output of "git push" depends on the transport method used; this
138section describes the output when pushing over the git protocol (either
139locally or via ssh).
140
141The status of the push is output in tabular form, with each line
142representing the status of a single ref. Each line is of the form:
143
144-------------------------------
145 <flag> <summary> <from> -> <to> (<reason>)
146-------------------------------
147
148flag::
149A single character indicating the status of the ref. This is
150blank for a successfully pushed ref, `!` for a ref that was
151rejected or failed to push, and '=' for a ref that was up to
152date and did not need pushing (note that the status of up to
153date refs is shown only when `git push` is running verbosely).
154
155summary::
156For a successfully pushed ref, the summary shows the old and new
157values of the ref in a form suitable for using as an argument to
158`git log` (this is `<old>..<new>` in most cases, and
159`<old>...<new>` for forced non-fast forward updates). For a
160failed update, more details are given for the failure.
161The string `rejected` indicates that git did not try to send the
162ref at all (typically because it is not a fast forward). The
163string `remote rejected` indicates that the remote end refused
164the update; this rejection is typically caused by a hook on the
165remote side. The string `remote failure` indicates that the
166remote end did not report the successful update of the ref
167(perhaps because of a temporary error on the remote side, a
168break in the network connection, or other transient error).
169
170from::
171The name of the local ref being pushed, minus its
172`refs/<type>/` prefix. In the case of deletion, the
173name of the local ref is omitted.
174
175to::
176The name of the remote ref being updated, minus its
177`refs/<type>/` prefix.
178
179reason::
180A human-readable explanation. In the case of successfully pushed
181refs, no explanation is needed. For a failed ref, the reason for
182failure is described.
Junio C Hamano6926bef2007-06-16 09:54:05183
184Examples
185--------
186
187git push origin master::
188Find a ref that matches `master` in the source repository
189(most likely, it would find `refs/heads/master`), and update
190the same ref (e.g. `refs/heads/master`) in `origin` repository
Junio C Hamanoa9aee782008-04-23 16:09:20191with it. If `master` did not exist remotely, it would be
192created.
Junio C Hamano6926bef2007-06-16 09:54:05193
194git push origin :experimental::
195Find a ref that matches `experimental` in the `origin` repository
196(e.g. `refs/heads/experimental`), and delete it.
197
Junio C Hamano7f80ae82008-07-30 18:31:35198git push origin master:satellite/master dev:satellite/dev::
199Use the source ref that matches `master` (e.g. `refs/heads/master`)
200to update the ref that matches `satellite/master` (most probably
201`refs/remotes/satellite/master`) in the `origin` repository, then
202do the same for `dev` and `satellite/dev`.
Junio C Hamano6926bef2007-06-16 09:54:05203
Junio C Hamanobfd4f9a2007-09-06 08:52:44204git push origin master:refs/heads/experimental::
205Create the branch `experimental` in the `origin` repository
Junio C Hamanoa9aee782008-04-23 16:09:20206by copying the current `master` branch. This form is only
207needed to create a new branch or tag in the remote repository when
208the local name and the remote name are different; otherwise,
209the ref name on its own will work.
Junio C Hamanobfd4f9a2007-09-06 08:52:44210
Junio C Hamano1a4e8412005-12-27 08:17:23211Author
212------
Junio C Hamano0868a302008-07-22 09:20:44213Written by Junio C Hamano <gitster@pobox.com>, later rewritten in C
Junio C Hamano3f403b02006-12-13 10:14:13214by Linus Torvalds <torvalds@osdl.org>
Junio C Hamano1a4e8412005-12-27 08:17:23215
216Documentation
217--------------
218Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
219
220GIT
221---
Junio C Hamanof7c042d2008-06-06 22:50:53222Part of the linkgit:git[1] suite