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