Documentation / git-pull.txton commit Merge branch 'maint' (5f0734f)
   1git-pull(1)
   2===========
   3
   4NAME
   5----
   6git-pull - Fetch from and merge with another repository or a local branch
   7
   8
   9SYNOPSIS
  10--------
  11'git-pull' <options> <repository> <refspec>...
  12
  13
  14DESCRIPTION
  15-----------
  16Runs `git-fetch` with the given parameters, and calls `git-merge`
  17to merge the retrieved head(s) into the current branch.
  18With `--rebase`, calls `git-rebase` instead of `git-merge`.
  19
  20Note that you can use `.` (current directory) as the
  21<repository> to pull from the local repository -- this is useful
  22when merging local branches into the current branch.
  23
  24Also note that options meant for `git-pull` itself and underlying
  25`git-merge` must be given before the options meant for `git-fetch`.
  26
  27OPTIONS
  28-------
  29include::merge-options.txt[]
  30
  31:git-pull: 1
  32
  33\--rebase::
  34        Instead of a merge, perform a rebase after fetching.  If
  35        there is a remote ref for the upstream branch, and this branch
  36        was rebased since last fetched, the rebase uses that information
  37        to avoid rebasing non-local changes. To make this the default
  38        for branch `<name>`, set configuration `branch.<name>.rebase`
  39        to `true`.
  40+
  41*NOTE:* This is a potentially _dangerous_ mode of operation.
  42It rewrites history, which does not bode well when you
  43published that history already.  Do *not* use this option
  44unless you have read linkgit:git-rebase[1] carefully.
  45
  46\--no-rebase::
  47        Override earlier \--rebase.
  48
  49include::fetch-options.txt[]
  50
  51include::pull-fetch-param.txt[]
  52
  53include::urls-remotes.txt[]
  54
  55include::merge-strategies.txt[]
  56
  57DEFAULT BEHAVIOUR
  58-----------------
  59
  60Often people use `git pull` without giving any parameter.
  61Traditionally, this has been equivalent to saying `git pull
  62origin`.  However, when configuration `branch.<name>.remote` is
  63present while on branch `<name>`, that value is used instead of
  64`origin`.
  65
  66In order to determine what URL to use to fetch from, the value
  67of the configuration `remote.<origin>.url` is consulted
  68and if there is not any such variable, the value on `URL: ` line
  69in `$GIT_DIR/remotes/<origin>` file is used.
  70
  71In order to determine what remote branches to fetch (and
  72optionally store in the tracking branches) when the command is
  73run without any refspec parameters on the command line, values
  74of the configuration variable `remote.<origin>.fetch` are
  75consulted, and if there aren't any, `$GIT_DIR/remotes/<origin>`
  76file is consulted and its `Pull: ` lines are used.
  77In addition to the refspec formats described in the OPTIONS
  78section, you can have a globbing refspec that looks like this:
  79
  80------------
  81refs/heads/*:refs/remotes/origin/*
  82------------
  83
  84A globbing refspec must have a non-empty RHS (i.e. must store
  85what were fetched in tracking branches), and its LHS and RHS
  86must end with `/*`.  The above specifies that all remote
  87branches are tracked using tracking branches in
  88`refs/remotes/origin/` hierarchy under the same name.
  89
  90The rule to determine which remote branch to merge after
  91fetching is a bit involved, in order not to break backward
  92compatibility.
  93
  94If explicit refspecs were given on the command
  95line of `git pull`, they are all merged.
  96
  97When no refspec was given on the command line, then `git pull`
  98uses the refspec from the configuration or
  99`$GIT_DIR/remotes/<origin>`.  In such cases, the following
 100rules apply:
 101
 102. If `branch.<name>.merge` configuration for the current
 103  branch `<name>` exists, that is the name of the branch at the
 104  remote site that is merged.
 105
 106. If the refspec is a globbing one, nothing is merged.
 107
 108. Otherwise the remote branch of the first refspec is merged.
 109
 110
 111EXAMPLES
 112--------
 113
 114git pull, git pull origin::
 115        Update the remote-tracking branches for the repository
 116        you cloned from, then merge one of them into your
 117        current branch.  Normally the branch merged in is
 118        the HEAD of the remote repository, but the choice is
 119        determined by the branch.<name>.remote and
 120        branch.<name>.merge options; see linkgit:git-config[1]
 121        for details.
 122
 123git pull origin next::
 124        Merge into the current branch the remote branch `next`;
 125        leaves a copy of `next` temporarily in FETCH_HEAD, but
 126        does not update any remote-tracking branches.
 127
 128git pull . fixes enhancements::
 129        Bundle local branch `fixes` and `enhancements` on top of
 130        the current branch, making an Octopus merge.  This `git pull .`
 131        syntax is equivalent to `git merge`.
 132
 133git pull -s ours . obsolete::
 134        Merge local branch `obsolete` into the current branch,
 135        using `ours` merge strategy.
 136
 137git pull --no-commit . maint::
 138        Merge local branch `maint` into the current branch, but
 139        do not make a commit automatically.  This can be used
 140        when you want to include further changes to the merge,
 141        or want to write your own merge commit message.
 142+
 143You should refrain from abusing this option to sneak substantial
 144changes into a merge commit.  Small fixups like bumping
 145release/version name would be acceptable.
 146
 147Command line pull of multiple branches from one repository::
 148+
 149------------------------------------------------
 150$ git checkout master
 151$ git fetch origin +pu:pu maint:tmp
 152$ git pull . tmp
 153------------------------------------------------
 154+
 155This updates (or creates, as necessary) branches `pu` and `tmp`
 156in the local repository by fetching from the branches
 157(respectively) `pu` and `maint` from the remote repository.
 158+
 159The `pu` branch will be updated even if it is does not
 160fast-forward; the others will not be.
 161+
 162The final command then merges the newly fetched `tmp` into master.
 163
 164
 165If you tried a pull which resulted in a complex conflicts and
 166would want to start over, you can recover with
 167linkgit:git-reset[1].
 168
 169
 170SEE ALSO
 171--------
 172linkgit:git-fetch[1], linkgit:git-merge[1], linkgit:git-config[1]
 173
 174
 175Author
 176------
 177Written by Linus Torvalds <torvalds@osdl.org>
 178and Junio C Hamano <junkio@cox.net>
 179
 180Documentation
 181--------------
 182Documentation by Jon Loeliger,
 183David Greaves,
 184Junio C Hamano and the git-list <git@vger.kernel.org>.
 185
 186GIT
 187---
 188Part of the linkgit:git[7] suite