]> git.ipfire.org Git - thirdparty/git.git/blob - Documentation/git-pull.txt
reftable/block: avoid decoding keys when searching restart points
[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|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 false, merge the upstream branch into the current branch.
120 +
121 When `interactive`, enable the interactive mode of rebase.
122 +
123 See `pull.rebase`, `branch.<name>.rebase` and `branch.autoSetupRebase` in
124 linkgit:git-config[1] if you want to make `git pull` always use
125 `--rebase` instead of merging.
126 +
127 [NOTE]
128 This is a potentially _dangerous_ mode of operation.
129 It rewrites history, which does not bode well when you
130 published that history already. Do *not* use this option
131 unless you have read linkgit:git-rebase[1] carefully.
132
133 --no-rebase::
134 This is shorthand for --rebase=false.
135
136 Options related to fetching
137 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
138
139 include::fetch-options.txt[]
140
141 include::pull-fetch-param.txt[]
142
143 include::urls-remotes.txt[]
144
145 include::merge-strategies.txt[]
146
147 DEFAULT BEHAVIOUR
148 -----------------
149
150 Often people use `git pull` without giving any parameter.
151 Traditionally, this has been equivalent to saying `git pull
152 origin`. However, when configuration `branch.<name>.remote` is
153 present while on branch `<name>`, that value is used instead of
154 `origin`.
155
156 In order to determine what URL to use to fetch from, the value
157 of the configuration `remote.<origin>.url` is consulted
158 and if there is not any such variable, the value on the `URL:` line
159 in `$GIT_DIR/remotes/<origin>` is used.
160
161 In order to determine what remote branches to fetch (and
162 optionally store in the remote-tracking branches) when the command is
163 run without any refspec parameters on the command line, values
164 of the configuration variable `remote.<origin>.fetch` are
165 consulted, and if there aren't any, `$GIT_DIR/remotes/<origin>`
166 is consulted and its `Pull:` lines are used.
167 In addition to the refspec formats described in the OPTIONS
168 section, you can have a globbing refspec that looks like this:
169
170 ------------
171 refs/heads/*:refs/remotes/origin/*
172 ------------
173
174 A globbing refspec must have a non-empty RHS (i.e. must store
175 what were fetched in remote-tracking branches), and its LHS and RHS
176 must end with `/*`. The above specifies that all remote
177 branches are tracked using remote-tracking branches in
178 `refs/remotes/origin/` hierarchy under the same name.
179
180 The rule to determine which remote branch to merge after
181 fetching is a bit involved, in order not to break backward
182 compatibility.
183
184 If explicit refspecs were given on the command
185 line of `git pull`, they are all merged.
186
187 When no refspec was given on the command line, then `git pull`
188 uses the refspec from the configuration or
189 `$GIT_DIR/remotes/<origin>`. In such cases, the following
190 rules apply:
191
192 . If `branch.<name>.merge` configuration for the current
193 branch `<name>` exists, that is the name of the branch at the
194 remote site that is merged.
195
196 . If the refspec is a globbing one, nothing is merged.
197
198 . Otherwise the remote branch of the first refspec is merged.
199
200
201 EXAMPLES
202 --------
203
204 * Update the remote-tracking branches for the repository
205 you cloned from, then merge one of them into your
206 current branch:
207 +
208 ------------------------------------------------
209 $ git pull
210 $ git pull origin
211 ------------------------------------------------
212 +
213 Normally the branch merged in is the HEAD of the remote repository,
214 but the choice is determined by the branch.<name>.remote and
215 branch.<name>.merge options; see linkgit:git-config[1] for details.
216
217 * Merge into the current branch the remote branch `next`:
218 +
219 ------------------------------------------------
220 $ git pull origin next
221 ------------------------------------------------
222 +
223 This leaves a copy of `next` temporarily in FETCH_HEAD, and
224 updates the remote-tracking branch `origin/next`.
225 The same can be done by invoking fetch and merge:
226 +
227 ------------------------------------------------
228 $ git fetch origin
229 $ git merge origin/next
230 ------------------------------------------------
231
232
233 If you tried a pull which resulted in complex conflicts and
234 would want to start over, you can recover with 'git reset'.
235
236
237 include::transfer-data-leaks.txt[]
238
239 BUGS
240 ----
241 Using --recurse-submodules can only fetch new commits in already checked
242 out submodules right now. When e.g. upstream added a new submodule in the
243 just fetched commits of the superproject the submodule itself cannot be
244 fetched, making it impossible to check out that submodule later without
245 having to do a fetch again. This is expected to be fixed in a future Git
246 version.
247
248 SEE ALSO
249 --------
250 linkgit:git-fetch[1], linkgit:git-merge[1], linkgit:git-config[1]
251
252 GIT
253 ---
254 Part of the linkgit:git[1] suite