]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-pull.txt
Git 1.7.6
[thirdparty/git.git] / Documentation / git-pull.txt
CommitLineData
215a7ad1
JH
1git-pull(1)
2===========
2cf565c5
DG
3
4NAME
5----
c3f0baac 6git-pull - Fetch from and merge with another repository or a local branch
2cf565c5
DG
7
8
9SYNOPSIS
10--------
3f8fc184 11'git pull' [options] [<repository> [<refspec>...]]
0c04094b 12
2cf565c5
DG
13
14DESCRIPTION
15-----------
ab9b3138 16
3f8fc184
JN
17Incorporates changes from a remote repository into the current
18branch. In its default mode, `git pull` is shorthand for
19`git fetch` followed by `git merge FETCH_HEAD`.
0c04094b 20
3f8fc184
JN
21More precisely, 'git pull' runs 'git fetch' with the given
22parameters and calls 'git merge' to merge the retrieved branch
23heads into the current branch.
24With `--rebase`, it runs 'git rebase' instead of 'git merge'.
93d69d86 25
3f8fc184
JN
26<repository> should be the name of a remote repository as
27passed to linkgit:git-fetch[1]. <refspec> can name an
28arbitrary remote ref (for example, the name of a tag) or even
0e615b25 29a collection of refs with corresponding remote-tracking branches
3bae8d4d
JN
30(e.g., refs/heads/{asterisk}:refs/remotes/origin/{asterisk}),
31but usually it is the name of a branch in the remote repository.
3f8fc184
JN
32
33Default values for <repository> and <branch> are read from the
34"remote" and "merge" configuration for the current branch
35as set by linkgit:git-branch[1] `--track`.
36
37Assume the following history exists and the current branch is
38"`master`":
39
40------------
41 A---B---C master on origin
42 /
43 D---E---F---G master
44------------
45
46Then "`git pull`" will fetch and replay the changes from the remote
47`master` branch since it diverged from the local `master` (i.e., `E`)
48until its current commit (`C`) on top of `master` and record the
49result in a new commit along with the names of the two parent commits
50and a log message from the user describing the changes.
51
52------------
53 A---B---C remotes/origin/master
54 / \
55 D---E---F---G---H master
56------------
57
58See linkgit:git-merge[1] for details, including how conflicts
59are presented and handled.
60
61In git 1.7.0 or later, to cancel a conflicting merge, use
62`git reset --merge`. *Warning*: In older versions of git, running 'git pull'
e330d8ca 63with uncommitted changes is discouraged: while possible, it leaves you
3f8fc184
JN
64in a state that may be hard to back out of in the case of a conflict.
65
66If any of the remote changes overlap with local uncommitted changes,
67the merge will be automatically cancelled and the work tree untouched.
68It is generally best to get any local changes in working order before
69pulling or stash them away with linkgit:git-stash[1].
e330d8ca 70
0c04094b
JH
71OPTIONS
72-------
3f7a9b5a 73
3f8fc184
JN
74Options meant for 'git pull' itself and the underlying 'git merge'
75must be given before the options meant for 'git fetch'.
76
409b8d82
TRC
77-q::
78--quiet::
9839018e
TRC
79 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.
409b8d82
TRC
82
83-v::
84--verbose::
85 Pass --verbose to git-fetch and git-merge.
86
8f0700dd 87--[no-]recurse-submodules[=yes|on-demand|no]::
7811d960
JL
88 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
91 commits, a feature git learned in 1.7.3. Notice that the result of a
92 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
3f7a9b5a
JA
96Options related to merging
97~~~~~~~~~~~~~~~~~~~~~~~~~~
98
93d69d86 99include::merge-options.txt[]
2cf565c5 100
10eb64f5 101:git-pull: 1
37465016 102
3240240f 103--rebase::
11fe3f73
MZ
104 Rebase the current branch on top of the upstream branch after
105 fetching. If there is a remote-tracking branch corresponding to
106 the upstream branch and the upstream branch was rebased since last
107 fetched, the rebase uses that information to avoid rebasing
108 non-local changes.
109+
c4f4157e
JA
110See `branch.<name>.rebase` and `branch.autosetuprebase` in
111linkgit:git-config[1] if you want to make `git pull` always use
112`{litdd}rebase` instead of merging.
473d3316 113+
6bfa3c99
JH
114[NOTE]
115This is a potentially _dangerous_ mode of operation.
473d3316
JH
116It rewrites history, which does not bode well when you
117published that history already. Do *not* use this option
118unless you have read linkgit:git-rebase[1] carefully.
cd67e4d4 119
3240240f
SB
120--no-rebase::
121 Override earlier --rebase.
cd67e4d4 122
3f7a9b5a
JA
123Options related to fetching
124~~~~~~~~~~~~~~~~~~~~~~~~~~~
125
a288394e
JS
126include::fetch-options.txt[]
127
128include::pull-fetch-param.txt[]
129
130include::urls-remotes.txt[]
131
132include::merge-strategies.txt[]
133
9e2586ff
JH
134DEFAULT BEHAVIOUR
135-----------------
136
137Often people use `git pull` without giving any parameter.
138Traditionally, this has been equivalent to saying `git pull
139origin`. However, when configuration `branch.<name>.remote` is
140present while on branch `<name>`, that value is used instead of
141`origin`.
142
143In order to determine what URL to use to fetch from, the value
144of the configuration `remote.<origin>.url` is consulted
145and if there is not any such variable, the value on `URL: ` line
146in `$GIT_DIR/remotes/<origin>` file is used.
147
148In order to determine what remote branches to fetch (and
8b3f3f84 149optionally store in the remote-tracking branches) when the command is
9e2586ff
JH
150run without any refspec parameters on the command line, values
151of the configuration variable `remote.<origin>.fetch` are
152consulted, and if there aren't any, `$GIT_DIR/remotes/<origin>`
153file is consulted and its `Pull: ` lines are used.
154In addition to the refspec formats described in the OPTIONS
155section, you can have a globbing refspec that looks like this:
156
157------------
158refs/heads/*:refs/remotes/origin/*
159------------
160
161A globbing refspec must have a non-empty RHS (i.e. must store
8b3f3f84 162what were fetched in remote-tracking branches), and its LHS and RHS
9e2586ff 163must end with `/*`. The above specifies that all remote
8b3f3f84 164branches are tracked using remote-tracking branches in
9e2586ff
JH
165`refs/remotes/origin/` hierarchy under the same name.
166
167The rule to determine which remote branch to merge after
168fetching is a bit involved, in order not to break backward
169compatibility.
170
171If explicit refspecs were given on the command
172line of `git pull`, they are all merged.
173
174When no refspec was given on the command line, then `git pull`
175uses the refspec from the configuration or
176`$GIT_DIR/remotes/<origin>`. In such cases, the following
177rules apply:
178
179. If `branch.<name>.merge` configuration for the current
180 branch `<name>` exists, that is the name of the branch at the
181 remote site that is merged.
182
183. If the refspec is a globbing one, nothing is merged.
184
185. Otherwise the remote branch of the first refspec is merged.
186
187
37465016
JH
188EXAMPLES
189--------
190
921177f5
CC
191* Update the remote-tracking branches for the repository
192 you cloned from, then merge one of them into your
193 current branch:
194+
195------------------------------------------------
196$ git pull, git pull origin
197------------------------------------------------
198+
199Normally the branch merged in is the HEAD of the remote repository,
200but the choice is determined by the branch.<name>.remote and
201branch.<name>.merge options; see linkgit:git-config[1] for details.
202
203* Merge into the current branch the remote branch `next`:
204+
205------------------------------------------------
206$ git pull origin next
207------------------------------------------------
208+
209This leaves a copy of `next` temporarily in FETCH_HEAD, but
d504f697
CB
210does not update any remote-tracking branches. Using remote-tracking
211branches, the same can be done by invoking fetch and merge:
921177f5
CC
212+
213------------------------------------------------
d504f697
CB
214$ git fetch origin
215$ git merge origin/next
921177f5 216------------------------------------------------
bccf5956 217
37465016 218
3ae854c3 219If you tried a pull which resulted in a complex conflicts and
0b444cdb 220would want to start over, you can recover with 'git reset'.
3ae854c3
JH
221
222
794a3592
JL
223BUGS
224----
225Using --recurse-submodules can only fetch new commits in already checked
226out submodules right now. When e.g. upstream added a new submodule in the
227just fetched commits of the superproject the submodule itself can not be
228fetched, making it impossible to check out that submodule later without
229having to do a fetch again. This is expected to be fixed in a future git
230version.
231
fdd08979
JH
232SEE ALSO
233--------
5162e697 234linkgit:git-fetch[1], linkgit:git-merge[1], linkgit:git-config[1]
fdd08979 235
2cf565c5
DG
236GIT
237---
9e1f0a85 238Part of the linkgit:git[1] suite