]> git.ipfire.org Git - thirdparty/git.git/blob - Documentation/git-pull.txt
Merge branch 'en/pull-conflicting-options' into maint
[thirdparty/git.git] / Documentation / git-pull.txt
1 git-pull(1)
2 ===========
3
4 NAME
5 ----
6 git-pull - Fetch from and integrate with another repository or a local branch
7
8
9 SYNOPSIS
10 --------
11 [verse]
12 'git pull' [<options>] [<repository> [<refspec>...]]
13
14
15 DESCRIPTION
16 -----------
17
18 Incorporates changes from a remote repository into the current branch.
19 If the current branch is behind the remote, then by default it will
20 fast-forward the current branch to match the remote. If the current
21 branch and the remote have diverged, the user needs to specify how to
22 reconcile the divergent branches with `--rebase` or `--no-rebase` (or
23 the corresponding configuration option in `pull.rebase`).
24
25 More precisely, `git pull` runs `git fetch` with the given parameters
26 and then depending on configuration options or command line flags,
27 will call either `git rebase` or `git merge` to reconcile diverging
28 branches.
29
30 <repository> should be the name of a remote repository as
31 passed to linkgit:git-fetch[1]. <refspec> can name an
32 arbitrary remote ref (for example, the name of a tag) or even
33 a collection of refs with corresponding remote-tracking branches
34 (e.g., refs/heads/{asterisk}:refs/remotes/origin/{asterisk}),
35 but usually it is the name of a branch in the remote repository.
36
37 Default values for <repository> and <branch> are read from the
38 "remote" and "merge" configuration for the current branch
39 as set by linkgit:git-branch[1] `--track`.
40
41 Assume the following history exists and the current branch is
42 "`master`":
43
44 ------------
45 A---B---C master on origin
46 /
47 D---E---F---G master
48 ^
49 origin/master in your repository
50 ------------
51
52 Then "`git pull`" will fetch and replay the changes from the remote
53 `master` branch since it diverged from the local `master` (i.e., `E`)
54 until its current commit (`C`) on top of `master` and record the
55 result in a new commit along with the names of the two parent commits
56 and a log message from the user describing the changes.
57
58 ------------
59 A---B---C origin/master
60 / \
61 D---E---F---G---H master
62 ------------
63
64 See linkgit:git-merge[1] for details, including how conflicts
65 are presented and handled.
66
67 In Git 1.7.0 or later, to cancel a conflicting merge, use
68 `git reset --merge`. *Warning*: In older versions of Git, running 'git pull'
69 with uncommitted changes is discouraged: while possible, it leaves you
70 in a state that may be hard to back out of in the case of a conflict.
71
72 If any of the remote changes overlap with local uncommitted changes,
73 the merge will be automatically canceled and the work tree untouched.
74 It is generally best to get any local changes in working order before
75 pulling or stash them away with linkgit:git-stash[1].
76
77 OPTIONS
78 -------
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 populated submodules should
92 be fetched, and if the working trees of active submodules should be
93 updated, too (see linkgit:git-fetch[1], linkgit:git-config[1] and
94 linkgit:gitmodules[5]).
95 +
96 If the checkout is done via rebase, local submodule commits are rebased as well.
97 +
98 If the update is done via merge, the submodule conflicts are resolved and checked out.
99
100 Options related to merging
101 ~~~~~~~~~~~~~~~~~~~~~~~~~~
102
103 :git-pull: 1
104
105 include::merge-options.txt[]
106
107 -r::
108 --rebase[=false|true|merges|preserve|interactive]::
109 When true, rebase the current branch on top of the upstream
110 branch after fetching. If there is a remote-tracking branch
111 corresponding to the upstream branch and the upstream branch
112 was rebased since last fetched, the rebase uses that information
113 to avoid rebasing non-local changes.
114 +
115 When set to `merges`, rebase using `git rebase --rebase-merges` so that
116 the local merge commits are included in the rebase (see
117 linkgit:git-rebase[1] for details).
118 +
119 When set to `preserve` (deprecated in favor of `merges`), rebase with the
120 `--preserve-merges` option passed to `git rebase` so that locally created
121 merge commits will not be flattened.
122 +
123 When false, merge the upstream branch into the current branch.
124 +
125 When `interactive`, enable the interactive mode of rebase.
126 +
127 See `pull.rebase`, `branch.<name>.rebase` and `branch.autoSetupRebase` in
128 linkgit:git-config[1] if you want to make `git pull` always use
129 `--rebase` instead of merging.
130 +
131 [NOTE]
132 This is a potentially _dangerous_ mode of operation.
133 It rewrites history, which does not bode well when you
134 published that history already. Do *not* use this option
135 unless you have read linkgit:git-rebase[1] carefully.
136
137 --no-rebase::
138 This is shorthand for --rebase=false.
139
140 Options related to fetching
141 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
142
143 include::fetch-options.txt[]
144
145 include::pull-fetch-param.txt[]
146
147 include::urls-remotes.txt[]
148
149 include::merge-strategies.txt[]
150
151 DEFAULT BEHAVIOUR
152 -----------------
153
154 Often people use `git pull` without giving any parameter.
155 Traditionally, this has been equivalent to saying `git pull
156 origin`. However, when configuration `branch.<name>.remote` is
157 present while on branch `<name>`, that value is used instead of
158 `origin`.
159
160 In order to determine what URL to use to fetch from, the value
161 of the configuration `remote.<origin>.url` is consulted
162 and if there is not any such variable, the value on the `URL:` line
163 in `$GIT_DIR/remotes/<origin>` is used.
164
165 In order to determine what remote branches to fetch (and
166 optionally store in the remote-tracking branches) when the command is
167 run without any refspec parameters on the command line, values
168 of the configuration variable `remote.<origin>.fetch` are
169 consulted, and if there aren't any, `$GIT_DIR/remotes/<origin>`
170 is consulted and its `Pull:` lines are used.
171 In addition to the refspec formats described in the OPTIONS
172 section, you can have a globbing refspec that looks like this:
173
174 ------------
175 refs/heads/*:refs/remotes/origin/*
176 ------------
177
178 A globbing refspec must have a non-empty RHS (i.e. must store
179 what were fetched in remote-tracking branches), and its LHS and RHS
180 must end with `/*`. The above specifies that all remote
181 branches are tracked using remote-tracking branches in
182 `refs/remotes/origin/` hierarchy under the same name.
183
184 The rule to determine which remote branch to merge after
185 fetching is a bit involved, in order not to break backward
186 compatibility.
187
188 If explicit refspecs were given on the command
189 line of `git pull`, they are all merged.
190
191 When no refspec was given on the command line, then `git pull`
192 uses the refspec from the configuration or
193 `$GIT_DIR/remotes/<origin>`. In such cases, the following
194 rules 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
205 EXAMPLES
206 --------
207
208 * 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
214 $ git pull origin
215 ------------------------------------------------
216 +
217 Normally the branch merged in is the HEAD of the remote repository,
218 but the choice is determined by the branch.<name>.remote and
219 branch.<name>.merge options; see linkgit:git-config[1] for details.
220
221 * Merge into the current branch the remote branch `next`:
222 +
223 ------------------------------------------------
224 $ git pull origin next
225 ------------------------------------------------
226 +
227 This leaves a copy of `next` temporarily in FETCH_HEAD, and
228 updates the remote-tracking branch `origin/next`.
229 The same can be done by invoking fetch and merge:
230 +
231 ------------------------------------------------
232 $ git fetch origin
233 $ git merge origin/next
234 ------------------------------------------------
235
236
237 If you tried a pull which resulted in complex conflicts and
238 would want to start over, you can recover with 'git reset'.
239
240
241 include::transfer-data-leaks.txt[]
242
243 BUGS
244 ----
245 Using --recurse-submodules can only fetch new commits in already checked
246 out submodules right now. When e.g. upstream added a new submodule in the
247 just fetched commits of the superproject the submodule itself cannot be
248 fetched, making it impossible to check out that submodule later without
249 having to do a fetch again. This is expected to be fixed in a future Git
250 version.
251
252 SEE ALSO
253 --------
254 linkgit:git-fetch[1], linkgit:git-merge[1], linkgit:git-config[1]
255
256 GIT
257 ---
258 Part of the linkgit:git[1] suite