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