Merge branch 'js/portable' into next
[git.git] / Documentation / git-push.txt
index a0ef61d..5b89110 100644 (file)
@@ -16,18 +16,43 @@ DESCRIPTION
 Updates remote refs using local refs, while sending objects
 necessary to complete the given refs.
 
 Updates remote refs using local refs, while sending objects
 necessary to complete the given refs.
 
-You can make "interesting" things to happen on the repository
+You can make interesting things happen to a repository
 every time you push into it, by setting up 'hooks' there.  See
 documentation for gitlink:git-receive-pack[1].
 
 
 OPTIONS
 -------
 every time you push into it, by setting up 'hooks' there.  See
 documentation for gitlink:git-receive-pack[1].
 
 
 OPTIONS
 -------
-include::pull-fetch-param.txt[]
+<repository>::
+       The "remote" repository that is destination of a push
+       operation.  See the section <<URLS,GIT URLS>> below.
+
+<refspec>::
+       The canonical format of a <refspec> parameter is
+       `+?<src>:<dst>`; that is, an optional plus `+`, followed
+       by the source ref, followed by a colon `:`, followed by
+       the destination ref.
++
+The <src> side can be an
+arbitrary "SHA1 expression" that can be used as an
+argument to `git-cat-file -t`.  E.g. `master~4` (push
+four parents before the current master head).
++
+The local ref that matches <src> is used
+to fast forward the remote ref that matches <dst>.  If
+the optional plus `+` is used, the remote ref is updated
+even if it does not result in a fast forward update.
++
+Some short-cut notations are also supported.
++
+* `tag <tag>` means the same as `refs/tags/<tag>:refs/tags/<tag>`.
+* A parameter <ref> without a colon is equivalent to
+  <ref>`:`<ref>, hence updates <ref> in the destination from <ref>
+  in the source.
 
 \--all::
 
 \--all::
-       Instead of naming each ref to push, specifies all refs
-       to be pushed.
+       Instead of naming each ref to push, specifies that all
+       refs be pushed.
 
 \--tags::
        All refs under `$GIT_DIR/refs/tags` are pushed, in
 
 \--tags::
        All refs under `$GIT_DIR/refs/tags` are pushed, in
@@ -40,6 +65,7 @@ include::pull-fetch-param.txt[]
        This flag disables the check.  This can cause the
        remote repository to lose commits; use it with care.
 
        This flag disables the check.  This can cause the
        remote repository to lose commits; use it with care.
 
+include::urls.txt[]
 
 Author
 ------
 
 Author
 ------