Merge branch 'jc/error-message-in-cherry-pick'
[gitweb.git] / Documentation / git-push.txt
index e9ad10672a7f045f25937ca85caec548fcb4327f..5f2494495bcec47d0de2daf109d46ec3c76cd912 100644 (file)
@@ -9,8 +9,8 @@ git-push - Update remote refs along with associated objects
 SYNOPSIS
 --------
 [verse]
-'git-push' [--all] [--tags] [--receive-pack=<git-receive-pack>]
-           [--repo=all] [-f | --force] [-v] [<repository> <refspec>...]
+'git-push' [--all] [--dry-run] [--tags] [--receive-pack=<git-receive-pack>]
+           [--repo=all] [-f | --force] [-v | --verbose] [<repository> <refspec>...]
 
 DESCRIPTION
 -----------
@@ -20,7 +20,7 @@ necessary to complete the given refs.
 
 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].
+documentation for linkgit:git-receive-pack[1].
 
 
 OPTIONS
@@ -48,21 +48,31 @@ even if it does not result in a fast forward update.
 Note: If no explicit refspec is found, (that is neither
 on the command line nor in any Push line of the
 corresponding remotes file---see below), then all the
-refs that exist both on the local side and on the remote
+heads that exist both on the local side and on the remote
 side are updated.
 +
 `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.
+A parameter <ref> without a colon pushes the <ref> from the source
+repository to the destination repository under the same name.
 +
 Pushing an empty <src> allows you to delete the <dst> ref from
 the remote repository.
 
 \--all::
        Instead of naming each ref to push, specifies that all
-       refs be pushed.
+       refs under `$GIT_DIR/refs/heads/` be pushed.
+
+\--mirror::
+       Instead of naming each ref to push, specifies that all
+       refs under `$GIT_DIR/refs/heads/` and `$GIT_DIR/refs/tags/`
+       be mirrored to the remote repository.  Newly created local
+       refs will be pushed to the remote end, locally updated refs
+       will be force updated on the remote end, and deleted refs
+       will be removed from the remote end.
+
+\--dry-run::
+       Do everything except actually send the updates.
 
 \--tags::
        All refs under `$GIT_DIR/refs/tags` are pushed, in
@@ -80,7 +90,7 @@ the remote repository.
 
 -f, \--force::
        Usually, the command refuses to update a remote ref that is
-       not a descendant of the local ref used to overwrite it.
+       not an ancestor of the local ref used to overwrite it.
        This flag disables the check.  This can cause the
        remote repository to lose commits; use it with care.
 
@@ -93,10 +103,36 @@ the remote repository.
        transfer spends extra cycles to minimize the number of
        objects to be sent and meant to be used on slower connection.
 
--v::
+-v, \--verbose::
        Run verbosely.
 
-include::urls.txt[]
+include::urls-remotes.txt[]
+
+
+Examples
+--------
+
+git push origin master::
+       Find a ref that matches `master` in the source repository
+       (most likely, it would find `refs/heads/master`), and update
+       the same ref (e.g. `refs/heads/master`) in `origin` repository
+       with it.
+
+git push origin :experimental::
+       Find a ref that matches `experimental` in the `origin` repository
+       (e.g. `refs/heads/experimental`), and delete it.
+
+git push origin master:satellite/master::
+       Find a ref that matches `master` in the source repository
+       (most likely, it would find `refs/heads/master`), and update
+       the ref that matches `satellite/master` (most likely, it would
+       be `refs/remotes/satellite/master`) in `origin` repository with it.
+
+git push origin master:refs/heads/experimental::
+       Create the branch `experimental` in the `origin` repository
+       by copying the current `master` branch.  This form is usually
+       needed to create a new branch in the remote repository as
+       there is no `experimental` branch to match.
 
 Author
 ------
@@ -109,5 +145,4 @@ Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
 
 GIT
 ---
-Part of the gitlink:git[7] suite
-
+Part of the linkgit:git[7] suite