Documentation / git-push.txton commit Merge branch 'db/fetch-pack' (d90a7fd)
   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] [<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 gitlink: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\--dry-run::
  67        Do everything except actually send the updates.
  68
  69\--tags::
  70        All refs under `$GIT_DIR/refs/tags` are pushed, in
  71        addition to refspecs explicitly listed on the command
  72        line.
  73
  74\--receive-pack=<git-receive-pack>::
  75        Path to the 'git-receive-pack' program on the remote
  76        end.  Sometimes useful when pushing to a remote
  77        repository over ssh, and you do not have the program in
  78        a directory on the default $PATH.
  79
  80\--exec=<git-receive-pack>::
  81        Same as \--receive-pack=<git-receive-pack>.
  82
  83-f, \--force::
  84        Usually, the command refuses to update a remote ref that is
  85        not an ancestor of the local ref used to overwrite it.
  86        This flag disables the check.  This can cause the
  87        remote repository to lose commits; use it with care.
  88
  89\--repo=<repo>::
  90        When no repository is specified the command defaults to
  91        "origin"; this overrides it.
  92
  93\--thin, \--no-thin::
  94        These options are passed to `git-send-pack`.  Thin
  95        transfer spends extra cycles to minimize the number of
  96        objects to be sent and meant to be used on slower connection.
  97
  98-v::
  99        Run verbosely.
 100
 101include::urls-remotes.txt[]
 102
 103
 104Examples
 105--------
 106
 107git push origin master::
 108        Find a ref that matches `master` in the source repository
 109        (most likely, it would find `refs/heads/master`), and update
 110        the same ref (e.g. `refs/heads/master`) in `origin` repository
 111        with it.
 112
 113git push origin :experimental::
 114        Find a ref that matches `experimental` in the `origin` repository
 115        (e.g. `refs/heads/experimental`), and delete it.
 116
 117git push origin master:satellite/master::
 118        Find a ref that matches `master` in the source repository
 119        (most likely, it would find `refs/heads/master`), and update
 120        the ref that matches `satellite/master` (most likely, it would
 121        be `refs/remotes/satellite/master`) in `origin` repository with it.
 122
 123git push origin master:refs/heads/experimental::
 124        Create the branch `experimental` in the `origin` repository
 125        by copying the current `master` branch.  This form is usually
 126        needed to create a new branch in the remote repository as
 127        there is no `experimental` branch to match.
 128
 129Author
 130------
 131Written by Junio C Hamano <junkio@cox.net>, later rewritten in C
 132by Linus Torvalds <torvalds@osdl.org>
 133
 134Documentation
 135--------------
 136Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
 137
 138GIT
 139---
 140Part of the gitlink:git[7] suite