Documentation / git-pull.txton commit run-command: add env_array, an optional argv_array for env (19a583d)
   1git-pull(1)
   2===========
   3
   4NAME
   5----
   6git-pull - Fetch from and integrate with another repository or a local branch
   7
   8
   9SYNOPSIS
  10--------
  11[verse]
  12'git pull' [options] [<repository> [<refspec>...]]
  13
  14
  15DESCRIPTION
  16-----------
  17
  18Incorporates changes from a remote repository into the current
  19branch.  In its default mode, `git pull` is shorthand for
  20`git fetch` followed by `git merge FETCH_HEAD`.
  21
  22More precisely, 'git pull' runs 'git fetch' with the given
  23parameters and calls 'git merge' to merge the retrieved branch
  24heads into the current branch.
  25With `--rebase`, it runs 'git rebase' instead of 'git merge'.
  26
  27<repository> should be the name of a remote repository as
  28passed to linkgit:git-fetch[1].  <refspec> can name an
  29arbitrary remote ref (for example, the name of a tag) or even
  30a collection of refs with corresponding remote-tracking branches
  31(e.g., refs/heads/{asterisk}:refs/remotes/origin/{asterisk}),
  32but usually it is the name of a branch in the remote repository.
  33
  34Default values for <repository> and <branch> are read from the
  35"remote" and "merge" configuration for the current branch
  36as set by linkgit:git-branch[1] `--track`.
  37
  38Assume the following history exists and the current branch is
  39"`master`":
  40
  41------------
  42          A---B---C master on origin
  43         /
  44    D---E---F---G master
  45        ^
  46        origin/master in your repository
  47------------
  48
  49Then "`git pull`" will fetch and replay the changes from the remote
  50`master` branch since it diverged from the local `master` (i.e., `E`)
  51until its current commit (`C`) on top of `master` and record the
  52result in a new commit along with the names of the two parent commits
  53and a log message from the user describing the changes.
  54
  55------------
  56          A---B---C origin/master
  57         /         \
  58    D---E---F---G---H master
  59------------
  60
  61See linkgit:git-merge[1] for details, including how conflicts
  62are presented and handled.
  63
  64In Git 1.7.0 or later, to cancel a conflicting merge, use
  65`git reset --merge`.  *Warning*: In older versions of Git, running 'git pull'
  66with uncommitted changes is discouraged: while possible, it leaves you
  67in a state that may be hard to back out of in the case of a conflict.
  68
  69If any of the remote changes overlap with local uncommitted changes,
  70the merge will be automatically cancelled and the work tree untouched.
  71It is generally best to get any local changes in working order before
  72pulling or stash them away with linkgit:git-stash[1].
  73
  74OPTIONS
  75-------
  76
  77Options meant for 'git pull' itself and the underlying 'git merge'
  78must be given before the options meant for 'git fetch'.
  79
  80-q::
  81--quiet::
  82        This is passed to both underlying git-fetch to squelch reporting of
  83        during transfer, and underlying git-merge to squelch output during
  84        merging.
  85
  86-v::
  87--verbose::
  88        Pass --verbose to git-fetch and git-merge.
  89
  90--[no-]recurse-submodules[=yes|on-demand|no]::
  91        This option controls if new commits of all populated submodules should
  92        be fetched too (see linkgit:git-config[1] and linkgit:gitmodules[5]).
  93        That might be necessary to get the data needed for merging submodule
  94        commits, a feature Git learned in 1.7.3. Notice that the result of a
  95        merge will not be checked out in the submodule, "git submodule update"
  96        has to be called afterwards to bring the work tree up to date with the
  97        merge result.
  98
  99Options related to merging
 100~~~~~~~~~~~~~~~~~~~~~~~~~~
 101
 102:git-pull: 1
 103
 104include::merge-options.txt[]
 105
 106-r::
 107--rebase[=false|true|preserve]::
 108        When true, rebase the current branch on top of the upstream
 109        branch after fetching. If there is a remote-tracking branch
 110        corresponding to the upstream branch and the upstream branch
 111        was rebased since last fetched, the rebase uses that information
 112        to avoid rebasing non-local changes.
 113+
 114When preserve, also rebase the current branch on top of the upstream
 115branch, but pass `--preserve-merges` along to `git rebase` so that
 116locally created merge commits will not be flattened.
 117+
 118When false, merge the current branch into the upstream branch.
 119+
 120See `pull.rebase`, `branch.<name>.rebase` and `branch.autosetuprebase` in
 121linkgit:git-config[1] if you want to make `git pull` always use
 122`--rebase` instead of merging.
 123+
 124[NOTE]
 125This is a potentially _dangerous_ mode of operation.
 126It rewrites history, which does not bode well when you
 127published that history already.  Do *not* use this option
 128unless you have read linkgit:git-rebase[1] carefully.
 129
 130--no-rebase::
 131        Override earlier --rebase.
 132
 133Options related to fetching
 134~~~~~~~~~~~~~~~~~~~~~~~~~~~
 135
 136include::fetch-options.txt[]
 137
 138include::pull-fetch-param.txt[]
 139
 140include::urls-remotes.txt[]
 141
 142include::merge-strategies.txt[]
 143
 144DEFAULT BEHAVIOUR
 145-----------------
 146
 147Often people use `git pull` without giving any parameter.
 148Traditionally, this has been equivalent to saying `git pull
 149origin`.  However, when configuration `branch.<name>.remote` is
 150present while on branch `<name>`, that value is used instead of
 151`origin`.
 152
 153In order to determine what URL to use to fetch from, the value
 154of the configuration `remote.<origin>.url` is consulted
 155and if there is not any such variable, the value on `URL: ` line
 156in `$GIT_DIR/remotes/<origin>` file is used.
 157
 158In order to determine what remote branches to fetch (and
 159optionally store in the remote-tracking branches) when the command is
 160run without any refspec parameters on the command line, values
 161of the configuration variable `remote.<origin>.fetch` are
 162consulted, and if there aren't any, `$GIT_DIR/remotes/<origin>`
 163file is consulted and its `Pull: ` lines are used.
 164In addition to the refspec formats described in the OPTIONS
 165section, you can have a globbing refspec that looks like this:
 166
 167------------
 168refs/heads/*:refs/remotes/origin/*
 169------------
 170
 171A globbing refspec must have a non-empty RHS (i.e. must store
 172what were fetched in remote-tracking branches), and its LHS and RHS
 173must end with `/*`.  The above specifies that all remote
 174branches are tracked using remote-tracking branches in
 175`refs/remotes/origin/` hierarchy under the same name.
 176
 177The rule to determine which remote branch to merge after
 178fetching is a bit involved, in order not to break backward
 179compatibility.
 180
 181If explicit refspecs were given on the command
 182line of `git pull`, they are all merged.
 183
 184When no refspec was given on the command line, then `git pull`
 185uses the refspec from the configuration or
 186`$GIT_DIR/remotes/<origin>`.  In such cases, the following
 187rules apply:
 188
 189. If `branch.<name>.merge` configuration for the current
 190  branch `<name>` exists, that is the name of the branch at the
 191  remote site that is merged.
 192
 193. If the refspec is a globbing one, nothing is merged.
 194
 195. Otherwise the remote branch of the first refspec is merged.
 196
 197
 198EXAMPLES
 199--------
 200
 201* Update the remote-tracking branches for the repository
 202  you cloned from, then merge one of them into your
 203  current branch:
 204+
 205------------------------------------------------
 206$ git pull, git pull origin
 207------------------------------------------------
 208+
 209Normally the branch merged in is the HEAD of the remote repository,
 210but the choice is determined by the branch.<name>.remote and
 211branch.<name>.merge options; see linkgit:git-config[1] for details.
 212
 213* Merge into the current branch the remote branch `next`:
 214+
 215------------------------------------------------
 216$ git pull origin next
 217------------------------------------------------
 218+
 219This leaves a copy of `next` temporarily in FETCH_HEAD, but
 220does not update any remote-tracking branches. Using remote-tracking
 221branches, the same can be done by invoking fetch and merge:
 222+
 223------------------------------------------------
 224$ git fetch origin
 225$ git merge origin/next
 226------------------------------------------------
 227
 228
 229If you tried a pull which resulted in complex conflicts and
 230would want to start over, you can recover with 'git reset'.
 231
 232
 233BUGS
 234----
 235Using --recurse-submodules can only fetch new commits in already checked
 236out submodules right now. When e.g. upstream added a new submodule in the
 237just fetched commits of the superproject the submodule itself can not be
 238fetched, making it impossible to check out that submodule later without
 239having to do a fetch again. This is expected to be fixed in a future Git
 240version.
 241
 242SEE ALSO
 243--------
 244linkgit:git-fetch[1], linkgit:git-merge[1], linkgit:git-config[1]
 245
 246GIT
 247---
 248Part of the linkgit:git[1] suite