]> git.ipfire.org Git - thirdparty/git.git/blob - Documentation/git-pull.txt
Merge branch 'kb/maint-filter-branch-disappear'
[thirdparty/git.git] / Documentation / git-pull.txt
1 git-pull(1)
2 ===========
3
4 NAME
5 ----
6 git-pull - Fetch from and merge with another repository or a local branch
7
8
9 SYNOPSIS
10 --------
11 'git-pull' <options> <repository> <refspec>...
12
13
14 DESCRIPTION
15 -----------
16 Runs `git-fetch` with the given parameters, and calls `git-merge`
17 to merge the retrieved head(s) into the current branch.
18 With `--rebase`, calls `git-rebase` instead of `git-merge`.
19
20 Note that you can use `.` (current directory) as the
21 <repository> to pull from the local repository -- this is useful
22 when merging local branches into the current branch.
23
24
25 OPTIONS
26 -------
27 include::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.
40 It rewrites history, which does not bode well when you
41 published that history already. Do *not* use this option
42 unless you have read linkgit:git-rebase[1] carefully.
43
44 \--no-rebase::
45 Override earlier \--rebase.
46
47 include::fetch-options.txt[]
48
49 include::pull-fetch-param.txt[]
50
51 include::urls-remotes.txt[]
52
53 include::merge-strategies.txt[]
54
55 DEFAULT BEHAVIOUR
56 -----------------
57
58 Often people use `git pull` without giving any parameter.
59 Traditionally, this has been equivalent to saying `git pull
60 origin`. However, when configuration `branch.<name>.remote` is
61 present while on branch `<name>`, that value is used instead of
62 `origin`.
63
64 In order to determine what URL to use to fetch from, the value
65 of the configuration `remote.<origin>.url` is consulted
66 and if there is not any such variable, the value on `URL: ` line
67 in `$GIT_DIR/remotes/<origin>` file is used.
68
69 In order to determine what remote branches to fetch (and
70 optionally store in the tracking branches) when the command is
71 run without any refspec parameters on the command line, values
72 of the configuration variable `remote.<origin>.fetch` are
73 consulted, and if there aren't any, `$GIT_DIR/remotes/<origin>`
74 file is consulted and its `Pull: ` lines are used.
75 In addition to the refspec formats described in the OPTIONS
76 section, you can have a globbing refspec that looks like this:
77
78 ------------
79 refs/heads/*:refs/remotes/origin/*
80 ------------
81
82 A globbing refspec must have a non-empty RHS (i.e. must store
83 what were fetched in tracking branches), and its LHS and RHS
84 must end with `/*`. The above specifies that all remote
85 branches are tracked using tracking branches in
86 `refs/remotes/origin/` hierarchy under the same name.
87
88 The rule to determine which remote branch to merge after
89 fetching is a bit involved, in order not to break backward
90 compatibility.
91
92 If explicit refspecs were given on the command
93 line of `git pull`, they are all merged.
94
95 When no refspec was given on the command line, then `git pull`
96 uses the refspec from the configuration or
97 `$GIT_DIR/remotes/<origin>`. In such cases, the following
98 rules 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
109 EXAMPLES
110 --------
111
112 git 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
121 git 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
126 git 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
131 git pull -s ours . obsolete::
132 Merge local branch `obsolete` into the current branch,
133 using `ours` merge strategy.
134
135 git 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 +
141 You should refrain from abusing this option to sneak substantial
142 changes into a merge commit. Small fixups like bumping
143 release/version name would be acceptable.
144
145 Command 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 +
153 This updates (or creates, as necessary) branches `pu` and `tmp`
154 in the local repository by fetching from the branches
155 (respectively) `pu` and `maint` from the remote repository.
156 +
157 The `pu` branch will be updated even if it is does not
158 fast-forward; the others will not be.
159 +
160 The final command then merges the newly fetched `tmp` into master.
161
162
163 If you tried a pull which resulted in a complex conflicts and
164 would want to start over, you can recover with
165 linkgit:git-reset[1].
166
167
168 SEE ALSO
169 --------
170 linkgit:git-fetch[1], linkgit:git-merge[1], linkgit:git-config[1]
171
172
173 Author
174 ------
175 Written by Linus Torvalds <torvalds@osdl.org>
176 and Junio C Hamano <junkio@cox.net>
177
178 Documentation
179 --------------
180 Documentation by Jon Loeliger,
181 David Greaves,
182 Junio C Hamano and the git-list <git@vger.kernel.org>.
183
184 GIT
185 ---
186 Part of the linkgit:git[7] suite