blob: d033b258e5ee7c6e16c7d96c6339282a849b1b02 [file] [log] [blame]
Junio C Hamano215a7ad2005-09-07 17:26:23 -07001git-pull(1)
2===========
David Greaves2cf565c2005-05-10 22:32:30 +01003
4NAME
5----
John Keeping153d7262013-07-07 20:02:15 +01006git-pull - Fetch from and integrate with another repository or a local branch
David Greaves2cf565c2005-05-10 22:32:30 +01007
8
9SYNOPSIS
10--------
Martin von Zweigbergk7791a1d2011-07-01 22:38:26 -040011[verse]
Jonathan Nieder3f8fc182010-08-02 16:39:30 -050012'git pull' [options] [<repository> [<refspec>...]]
Junio C Hamano0c040942005-07-16 00:17:42 -070013
David Greaves2cf565c2005-05-10 22:32:30 +010014
15DESCRIPTION
16-----------
Junio C Hamanoab9b3132005-08-24 16:23:08 -070017
Jonathan Nieder3f8fc182010-08-02 16:39:30 -050018Incorporates 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`.
Junio C Hamano0c040942005-07-16 00:17:42 -070021
Jonathan Nieder3f8fc182010-08-02 16:39:30 -050022More 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'.
Jon Loeliger93d69d82005-11-06 23:30:56 -060026
Jonathan Nieder3f8fc182010-08-02 16:39:30 -050027<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
Matthieu Moy0e615b22010-11-02 16:31:20 +010030a collection of refs with corresponding remote-tracking branches
Jonathan Nieder3bae8d42010-12-03 14:04:17 -060031(e.g., refs/heads/{asterisk}:refs/remotes/origin/{asterisk}),
32but usually it is the name of a branch in the remote repository.
Jonathan Nieder3f8fc182010-08-02 16:39:30 -050033
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
Junio C Hamano5a3fd6a2013-10-31 13:43:35 -070045 ^
46 origin/master in your repository
Jonathan Nieder3f8fc182010-08-02 16:39:30 -050047------------
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------------
Junio C Hamano5a3fd6a2013-10-31 13:43:35 -070056 A---B---C origin/master
Jonathan Nieder3f8fc182010-08-02 16:39:30 -050057 / \
58 D---E---F---G---H master
59------------
60
61See linkgit:git-merge[1] for details, including how conflicts
62are presented and handled.
63
Thomas Ackermann2de9b712013-01-21 20:17:53 +010064In 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'
Thomas Raste330d8c2010-01-07 17:42:27 +010066with uncommitted changes is discouraged: while possible, it leaves you
Jonathan Nieder3f8fc182010-08-02 16:39:30 -050067in 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].
Thomas Raste330d8c2010-01-07 17:42:27 +010073
Junio C Hamano0c040942005-07-16 00:17:42 -070074OPTIONS
75-------
Jari Aalto3f7a9b52009-10-22 17:14:57 +030076
Tay Ray Chuan409b8d82010-02-24 20:50:21 +080077-q::
78--quiet::
Tay Ray Chuan98390182010-02-24 20:50:28 +080079 This is passed to both underlying git-fetch to squelch reporting of
80 during transfer, and underlying git-merge to squelch output during
81 merging.
Tay Ray Chuan409b8d82010-02-24 20:50:21 +080082
83-v::
84--verbose::
85 Pass --verbose to git-fetch and git-merge.
86
Jens Lehmann8f0700d2011-03-06 23:11:21 +010087--[no-]recurse-submodules[=yes|on-demand|no]::
Jens Lehmann7811d962011-02-07 23:24:54 +010088 This option controls if new commits of all populated submodules should
89 be fetched too (see linkgit:git-config[1] and linkgit:gitmodules[5]).
90 That might be necessary to get the data needed for merging submodule
Thomas Ackermann2de9b712013-01-21 20:17:53 +010091 commits, a feature Git learned in 1.7.3. Notice that the result of a
Jens Lehmann7811d962011-02-07 23:24:54 +010092 merge will not be checked out in the submodule, "git submodule update"
93 has to be called afterwards to bring the work tree up to date with the
94 merge result.
95
Jari Aalto3f7a9b52009-10-22 17:14:57 +030096Options related to merging
97~~~~~~~~~~~~~~~~~~~~~~~~~~
98
Miklos Vajna10eb64f2008-01-25 10:17:38 +000099:git-pull: 1
Junio C Hamano37465012005-11-04 00:06:20 -0800100
Junio C Hamanod51a4752014-01-14 10:26:21 -0800101include::merge-options.txt[]
102
Miklos Vajnad9aa3612012-08-16 11:50:18 +0200103-r::
Johannes Schindelinf5eb87b2016-01-13 13:17:15 +0100104--rebase[=false|true|preserve|interactive]::
Stephen Haberman66713ef2013-08-12 22:43:42 -0500105 When true, rebase the current branch on top of the upstream
106 branch after fetching. If there is a remote-tracking branch
107 corresponding to the upstream branch and the upstream branch
108 was rebased since last fetched, the rebase uses that information
109 to avoid rebasing non-local changes.
110+
Sebastian Schuberth129260c2015-03-26 21:11:21 +0100111When set to preserve, rebase with the `--preserve-merges` option passed
112to `git rebase` so that locally created merge commits will not be flattened.
Stephen Haberman66713ef2013-08-12 22:43:42 -0500113+
114When false, merge the current branch into the upstream branch.
Martin von Zweigbergk11fe3f72010-11-12 19:55:58 +0100115+
Johannes Schindelinf5eb87b2016-01-13 13:17:15 +0100116When `interactive`, enable the interactive mode of rebase.
117+
Nguyễn Thái Ngọc Duyda0005b2015-03-11 16:32:45 -0400118See `pull.rebase`, `branch.<name>.rebase` and `branch.autoSetupRebase` in
Jari Aaltoc4f41572010-12-03 10:20:54 +0200119linkgit:git-config[1] if you want to make `git pull` always use
Jeff King6cf378f2012-04-26 04:51:57 -0400120`--rebase` instead of merging.
Junio C Hamano473d33162008-02-11 11:22:01 -0800121+
Junio C Hamano6bfa3c92008-06-12 14:19:09 -0700122[NOTE]
123This is a potentially _dangerous_ mode of operation.
Junio C Hamano473d33162008-02-11 11:22:01 -0800124It rewrites history, which does not bode well when you
125published that history already. Do *not* use this option
126unless you have read linkgit:git-rebase[1] carefully.
Johannes Schindelincd67e4d2007-11-28 13:11:07 +0000127
Stephan Beyer32402402008-06-08 03:36:09 +0200128--no-rebase::
129 Override earlier --rebase.
Johannes Schindelincd67e4d2007-11-28 13:11:07 +0000130
Mehul Jainf66398e2016-03-21 23:48:03 +0530131--autostash::
132--no-autostash::
133 Before starting rebase, stash local modifications away (see
134 linkgit:git-stash[1]) if needed, and apply the stash when
135 done. `--no-autostash` is useful to override the `rebase.autoStash`
136 configuration variable (see linkgit:git-config[1]).
137+
138This option is only valid when "--rebase" is used.
139
Jari Aalto3f7a9b52009-10-22 17:14:57 +0300140Options related to fetching
141~~~~~~~~~~~~~~~~~~~~~~~~~~~
142
Jay Soffiana2883942008-02-19 14:24:32 -0500143include::fetch-options.txt[]
144
145include::pull-fetch-param.txt[]
146
147include::urls-remotes.txt[]
148
149include::merge-strategies.txt[]
150
Junio C Hamano9e2586f2007-02-08 23:35:43 -0800151DEFAULT BEHAVIOUR
152-----------------
153
154Often people use `git pull` without giving any parameter.
155Traditionally, this has been equivalent to saying `git pull
156origin`. However, when configuration `branch.<name>.remote` is
157present while on branch `<name>`, that value is used instead of
158`origin`.
159
160In order to determine what URL to use to fetch from, the value
161of the configuration `remote.<origin>.url` is consulted
162and if there is not any such variable, the value on `URL: ` line
163in `$GIT_DIR/remotes/<origin>` file is used.
164
165In order to determine what remote branches to fetch (and
Matthieu Moy8b3f3f82010-11-02 16:31:23 +0100166optionally store in the remote-tracking branches) when the command is
Junio C Hamano9e2586f2007-02-08 23:35:43 -0800167run without any refspec parameters on the command line, values
168of the configuration variable `remote.<origin>.fetch` are
169consulted, and if there aren't any, `$GIT_DIR/remotes/<origin>`
170file is consulted and its `Pull: ` lines are used.
171In addition to the refspec formats described in the OPTIONS
172section, you can have a globbing refspec that looks like this:
173
174------------
175refs/heads/*:refs/remotes/origin/*
176------------
177
178A globbing refspec must have a non-empty RHS (i.e. must store
Matthieu Moy8b3f3f82010-11-02 16:31:23 +0100179what were fetched in remote-tracking branches), and its LHS and RHS
Junio C Hamano9e2586f2007-02-08 23:35:43 -0800180must end with `/*`. The above specifies that all remote
Matthieu Moy8b3f3f82010-11-02 16:31:23 +0100181branches are tracked using remote-tracking branches in
Junio C Hamano9e2586f2007-02-08 23:35:43 -0800182`refs/remotes/origin/` hierarchy under the same name.
183
184The rule to determine which remote branch to merge after
185fetching is a bit involved, in order not to break backward
186compatibility.
187
188If explicit refspecs were given on the command
189line of `git pull`, they are all merged.
190
191When no refspec was given on the command line, then `git pull`
192uses the refspec from the configuration or
193`$GIT_DIR/remotes/<origin>`. In such cases, the following
194rules apply:
195
196. If `branch.<name>.merge` configuration for the current
197 branch `<name>` exists, that is the name of the branch at the
198 remote site that is merged.
199
200. If the refspec is a globbing one, nothing is merged.
201
202. Otherwise the remote branch of the first refspec is merged.
203
204
Junio C Hamano37465012005-11-04 00:06:20 -0800205EXAMPLES
206--------
207
Christian Couder921177f2008-05-07 06:29:28 +0200208* Update the remote-tracking branches for the repository
209 you cloned from, then merge one of them into your
210 current branch:
211+
212------------------------------------------------
213$ git pull, git pull origin
214------------------------------------------------
215+
216Normally the branch merged in is the HEAD of the remote repository,
217but the choice is determined by the branch.<name>.remote and
218branch.<name>.merge options; see linkgit:git-config[1] for details.
Junio C Hamano37465012005-11-04 00:06:20 -0800219
Christian Couder921177f2008-05-07 06:29:28 +0200220* Merge into the current branch the remote branch `next`:
221+
222------------------------------------------------
223$ git pull origin next
224------------------------------------------------
225+
226This leaves a copy of `next` temporarily in FETCH_HEAD, but
Clemens Buchacherd504f692009-10-21 19:21:23 +0200227does not update any remote-tracking branches. Using remote-tracking
228branches, the same can be done by invoking fetch and merge:
Christian Couder921177f2008-05-07 06:29:28 +0200229+
230------------------------------------------------
Clemens Buchacherd504f692009-10-21 19:21:23 +0200231$ git fetch origin
232$ git merge origin/next
Christian Couder921177f2008-05-07 06:29:28 +0200233------------------------------------------------
Jon Loeligerbccf5952005-11-04 20:36:08 -0600234
Junio C Hamano37465012005-11-04 00:06:20 -0800235
Mihai Capotă38ef8a72013-03-27 12:04:51 +0100236If you tried a pull which resulted in complex conflicts and
Thomas Rast0b444cd2010-01-10 00:33:00 +0100237would want to start over, you can recover with 'git reset'.
Junio C Hamano3ae854c2005-12-16 18:23:33 -0800238
239
Jens Lehmann794a3592011-03-06 23:14:15 +0100240BUGS
241----
242Using --recurse-submodules can only fetch new commits in already checked
243out submodules right now. When e.g. upstream added a new submodule in the
244just fetched commits of the superproject the submodule itself can not be
245fetched, making it impossible to check out that submodule later without
Thomas Ackermann2de9b712013-01-21 20:17:53 +0100246having to do a fetch again. This is expected to be fixed in a future Git
Jens Lehmann794a3592011-03-06 23:14:15 +0100247version.
248
Junio C Hamanofdd08972005-11-05 01:37:00 -0800249SEE ALSO
250--------
Dan McGee5162e692007-12-29 00:20:38 -0600251linkgit:git-fetch[1], linkgit:git-merge[1], linkgit:git-config[1]
Junio C Hamanofdd08972005-11-05 01:37:00 -0800252
David Greaves2cf565c2005-05-10 22:32:30 +0100253GIT
254---
Christian Couder9e1f0a82008-06-06 09:07:32 +0200255Part of the linkgit:git[1] suite