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