Documentation / git-push.txton commit Merge branch 'bd/qsort' (f8732c5)
   1git-push(1)
   2===========
   3
   4NAME
   5----
   6git-push - Update remote refs along with associated objects
   7
   8
   9SYNOPSIS
  10--------
  11[verse]
  12'git-push' [--all] [--dry-run] [--tags] [--receive-pack=<git-receive-pack>]
  13           [--repo=all] [-f | --force] [-v | --verbose] [<repository> <refspec>...]
  14
  15DESCRIPTION
  16-----------
  17
  18Updates remote refs using local refs, while sending objects
  19necessary to complete the given refs.
  20
  21You can make interesting things happen to a repository
  22every time you push into it, by setting up 'hooks' there.  See
  23documentation for linkgit:git-receive-pack[1].
  24
  25
  26OPTIONS
  27-------
  28<repository>::
  29        The "remote" repository that is destination of a push
  30        operation.  See the section <<URLS,GIT URLS>> below.
  31
  32<refspec>::
  33        The canonical format of a <refspec> parameter is
  34        `+?<src>:<dst>`; that is, an optional plus `+`, followed
  35        by the source ref, followed by a colon `:`, followed by
  36        the destination ref.
  37+
  38The <src> side can be an
  39arbitrary "SHA1 expression" that can be used as an
  40argument to `git-cat-file -t`.  E.g. `master~4` (push
  41four parents before the current master head).
  42+
  43The local ref that matches <src> is used
  44to fast forward the remote ref that matches <dst>.  If
  45the optional plus `+` is used, the remote ref is updated
  46even if it does not result in a fast forward update.
  47+
  48Note: If no explicit refspec is found, (that is neither
  49on the command line nor in any Push line of the
  50corresponding remotes file---see below), then all the
  51heads that exist both on the local side and on the remote
  52side are updated.
  53+
  54`tag <tag>` means the same as `refs/tags/<tag>:refs/tags/<tag>`.
  55+
  56A parameter <ref> without a colon pushes the <ref> from the source
  57repository to the destination repository under the same name.
  58+
  59Pushing an empty <src> allows you to delete the <dst> ref from
  60the remote repository.
  61
  62\--all::
  63        Instead of naming each ref to push, specifies that all
  64        refs under `$GIT_DIR/refs/heads/` be pushed.
  65
  66\--mirror::
  67        Instead of naming each ref to push, specifies that all
  68        refs under `$GIT_DIR/refs/heads/` and `$GIT_DIR/refs/tags/`
  69        be mirrored to the remote repository.  Newly created local
  70        refs will be pushed to the remote end, locally updated refs
  71        will be force updated on the remote end, and deleted refs
  72        will be removed from the remote end.
  73
  74\--dry-run::
  75        Do everything except actually send the updates.
  76
  77\--tags::
  78        All refs under `$GIT_DIR/refs/tags` are pushed, in
  79        addition to refspecs explicitly listed on the command
  80        line.
  81
  82\--receive-pack=<git-receive-pack>::
  83        Path to the 'git-receive-pack' program on the remote
  84        end.  Sometimes useful when pushing to a remote
  85        repository over ssh, and you do not have the program in
  86        a directory on the default $PATH.
  87
  88\--exec=<git-receive-pack>::
  89        Same as \--receive-pack=<git-receive-pack>.
  90
  91-f, \--force::
  92        Usually, the command refuses to update a remote ref that is
  93        not an ancestor of the local ref used to overwrite it.
  94        This flag disables the check.  This can cause the
  95        remote repository to lose commits; use it with care.
  96
  97\--repo=<repo>::
  98        When no repository is specified the command defaults to
  99        "origin"; this overrides it.
 100
 101\--thin, \--no-thin::
 102        These options are passed to `git-send-pack`.  Thin
 103        transfer spends extra cycles to minimize the number of
 104        objects to be sent and meant to be used on slower connection.
 105
 106-v, \--verbose::
 107        Run verbosely.
 108
 109include::urls-remotes.txt[]
 110
 111
 112Examples
 113--------
 114
 115git push origin master::
 116        Find a ref that matches `master` in the source repository
 117        (most likely, it would find `refs/heads/master`), and update
 118        the same ref (e.g. `refs/heads/master`) in `origin` repository
 119        with it.
 120
 121git push origin :experimental::
 122        Find a ref that matches `experimental` in the `origin` repository
 123        (e.g. `refs/heads/experimental`), and delete it.
 124
 125git push origin master:satellite/master::
 126        Find a ref that matches `master` in the source repository
 127        (most likely, it would find `refs/heads/master`), and update
 128        the ref that matches `satellite/master` (most likely, it would
 129        be `refs/remotes/satellite/master`) in `origin` repository with it.
 130
 131git push origin master:refs/heads/experimental::
 132        Create the branch `experimental` in the `origin` repository
 133        by copying the current `master` branch.  This form is usually
 134        needed to create a new branch in the remote repository as
 135        there is no `experimental` branch to match.
 136
 137Author
 138------
 139Written by Junio C Hamano <junkio@cox.net>, later rewritten in C
 140by Linus Torvalds <torvalds@osdl.org>
 141
 142Documentation
 143--------------
 144Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
 145
 146GIT
 147---
 148Part of the linkgit:git[7] suite