Documentation / git-pull.txton commit Merge branch 'ss/pull-rebase-preserve' (3a18352)
   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 set to preserve, rebase with the `--preserve-merges` option passed
 115to `git rebase` so that locally created merge commits will not be flattened.
 116+
 117When false, merge the current branch into the upstream branch.
 118+
 119See `pull.rebase`, `branch.<name>.rebase` and `branch.autoSetupRebase` in
 120linkgit:git-config[1] if you want to make `git pull` always use
 121`--rebase` instead of merging.
 122+
 123[NOTE]
 124This is a potentially _dangerous_ mode of operation.
 125It rewrites history, which does not bode well when you
 126published that history already.  Do *not* use this option
 127unless you have read linkgit:git-rebase[1] carefully.
 128
 129--no-rebase::
 130        Override earlier --rebase.
 131
 132Options related to fetching
 133~~~~~~~~~~~~~~~~~~~~~~~~~~~
 134
 135include::fetch-options.txt[]
 136
 137include::pull-fetch-param.txt[]
 138
 139include::urls-remotes.txt[]
 140
 141include::merge-strategies.txt[]
 142
 143DEFAULT BEHAVIOUR
 144-----------------
 145
 146Often people use `git pull` without giving any parameter.
 147Traditionally, this has been equivalent to saying `git pull
 148origin`.  However, when configuration `branch.<name>.remote` is
 149present while on branch `<name>`, that value is used instead of
 150`origin`.
 151
 152In order to determine what URL to use to fetch from, the value
 153of the configuration `remote.<origin>.url` is consulted
 154and if there is not any such variable, the value on `URL: ` line
 155in `$GIT_DIR/remotes/<origin>` file is used.
 156
 157In order to determine what remote branches to fetch (and
 158optionally store in the remote-tracking branches) when the command is
 159run without any refspec parameters on the command line, values
 160of the configuration variable `remote.<origin>.fetch` are
 161consulted, and if there aren't any, `$GIT_DIR/remotes/<origin>`
 162file is consulted and its `Pull: ` lines are used.
 163In addition to the refspec formats described in the OPTIONS
 164section, you can have a globbing refspec that looks like this:
 165
 166------------
 167refs/heads/*:refs/remotes/origin/*
 168------------
 169
 170A globbing refspec must have a non-empty RHS (i.e. must store
 171what were fetched in remote-tracking branches), and its LHS and RHS
 172must end with `/*`.  The above specifies that all remote
 173branches are tracked using remote-tracking branches in
 174`refs/remotes/origin/` hierarchy under the same name.
 175
 176The rule to determine which remote branch to merge after
 177fetching is a bit involved, in order not to break backward
 178compatibility.
 179
 180If explicit refspecs were given on the command
 181line of `git pull`, they are all merged.
 182
 183When no refspec was given on the command line, then `git pull`
 184uses the refspec from the configuration or
 185`$GIT_DIR/remotes/<origin>`.  In such cases, the following
 186rules apply:
 187
 188. If `branch.<name>.merge` configuration for the current
 189  branch `<name>` exists, that is the name of the branch at the
 190  remote site that is merged.
 191
 192. If the refspec is a globbing one, nothing is merged.
 193
 194. Otherwise the remote branch of the first refspec is merged.
 195
 196
 197EXAMPLES
 198--------
 199
 200* Update the remote-tracking branches for the repository
 201  you cloned from, then merge one of them into your
 202  current branch:
 203+
 204------------------------------------------------
 205$ git pull, git pull origin
 206------------------------------------------------
 207+
 208Normally the branch merged in is the HEAD of the remote repository,
 209but the choice is determined by the branch.<name>.remote and
 210branch.<name>.merge options; see linkgit:git-config[1] for details.
 211
 212* Merge into the current branch the remote branch `next`:
 213+
 214------------------------------------------------
 215$ git pull origin next
 216------------------------------------------------
 217+
 218This leaves a copy of `next` temporarily in FETCH_HEAD, but
 219does not update any remote-tracking branches. Using remote-tracking
 220branches, the same can be done by invoking fetch and merge:
 221+
 222------------------------------------------------
 223$ git fetch origin
 224$ git merge origin/next
 225------------------------------------------------
 226
 227
 228If you tried a pull which resulted in complex conflicts and
 229would want to start over, you can recover with 'git reset'.
 230
 231
 232BUGS
 233----
 234Using --recurse-submodules can only fetch new commits in already checked
 235out submodules right now. When e.g. upstream added a new submodule in the
 236just fetched commits of the superproject the submodule itself can not be
 237fetched, making it impossible to check out that submodule later without
 238having to do a fetch again. This is expected to be fixed in a future Git
 239version.
 240
 241SEE ALSO
 242--------
 243linkgit:git-fetch[1], linkgit:git-merge[1], linkgit:git-config[1]
 244
 245GIT
 246---
 247Part of the linkgit:git[1] suite