34
34
include::merge-strategies.txt[]
39
Often people use `git pull` without giving any parameter.
40
Traditionally, this has been equivalent to saying `git pull
41
origin`. However, when configuration `branch.<name>.remote` is
42
present while on branch `<name>`, that value is used instead of
45
In order to determine what URL to use to fetch from, the value
46
of the configuration `remote.<origin>.url` is consulted
47
and if there is not any such variable, the value on `URL: ` line
48
in `$GIT_DIR/remotes/<origin>` file is used.
50
In order to determine what remote branches to fetch (and
51
optionally store in the tracking branches) when the command is
52
run without any refspec parameters on the command line, values
53
of the configuration variable `remote.<origin>.fetch` are
54
consulted, and if there aren't any, `$GIT_DIR/remotes/<origin>`
55
file is consulted and its `Pull: ` lines are used.
56
In addition to the refspec formats described in the OPTIONS
57
section, you can have a globbing refspec that looks like this:
60
refs/heads/*:refs/remotes/origin/*
63
A globbing refspec must have a non-empty RHS (i.e. must store
64
what were fetched in tracking branches), and its LHS and RHS
65
must end with `/*`. The above specifies that all remote
66
branches are tracked using tracking branches in
67
`refs/remotes/origin/` hierarchy under the same name.
69
The rule to determine which remote branch to merge after
70
fetching is a bit involved, in order not to break backward
73
If explicit refspecs were given on the command
74
line of `git pull`, they are all merged.
76
When no refspec was given on the command line, then `git pull`
77
uses the refspec from the configuration or
78
`$GIT_DIR/remotes/<origin>`. In such cases, the following
81
. If `branch.<name>.merge` configuration for the current
82
branch `<name>` exists, that is the name of the branch at the
83
remote site that is merged.
85
. If the refspec is a globbing one, nothing is merged.
87
. Otherwise the remote branch of the first refspec is merged.
39
93
git pull, git pull origin::
40
Fetch the default head from the repository you cloned
41
from and merge it into your current branch.
94
Update the remote-tracking branches for the repository
95
you cloned from, then merge one of them into your
96
current branch. Normally the branch merged in is
97
the HEAD of the remote repository, but the choice is
98
determined by the branch.<name>.remote and
99
branch.<name>.merge options; see gitlink:git-config[1]
102
git pull origin next::
103
Merge into the current branch the remote branch `next`;
104
leaves a copy of `next` temporarily in FETCH_HEAD, but
105
does not update any remote-tracking branches.
107
git pull . fixes enhancements::
108
Bundle local branch `fixes` and `enhancements` on top of
109
the current branch, making an Octopus merge. This `git pull .`
110
syntax is equivalent to `git merge`.
43
112
git pull -s ours . obsolete::
44
113
Merge local branch `obsolete` into the current branch,
45
114
using `ours` merge strategy.
47
git pull . fixes enhancements::
48
Bundle local branch `fixes` and `enhancements` on top of
49
the current branch, making an Octopus merge.
51
116
git pull --no-commit . maint::
52
117
Merge local branch `maint` into the current branch, but
53
118
do not make a commit automatically. This can be used
61
126
Command line pull of multiple branches from one repository::
63
128
------------------------------------------------
64
$ cat .git/remotes/origin
65
URL: git://git.kernel.org/pub/scm/git/git.git
69
$ git fetch origin master:origin +pu:pu maint:maint
71
------------------------------------------------
73
Here, a typical `.git/remotes/origin` file from a
74
`git-clone` operation is used in combination with
75
command line options to `git-fetch` to first update
76
multiple branches of the local repository and then
77
to merge the remote `origin` branch into the local
78
`master` branch. The local `pu` branch is updated
79
even if it does not result in a fast forward update.
80
Here, the pull can obtain its objects from the local
81
repository using `.`, as the previous `git-fetch` is
82
known to have already obtained and made available
83
all the necessary objects.
86
Pull of multiple branches from one repository using `.git/remotes` file::
88
------------------------------------------------
89
$ cat .git/remotes/origin
90
URL: git://git.kernel.org/pub/scm/git/git.git
97
------------------------------------------------
99
Here, a typical `.git/remotes/origin` file from a
100
`git-clone` operation has been hand-modified to include
101
the branch-mapping of additional remote and local
102
heads directly. A single `git-pull` operation while
103
in the `master` branch will fetch multiple heads and
104
merge the remote `origin` head into the current,
105
local `master` branch.
129
$ git checkout master
130
$ git fetch origin +pu:pu maint:tmp
132
------------------------------------------------
134
This updates (or creates, as necessary) branches `pu` and `tmp`
135
in the local repository by fetching from the branches
136
(respectively) `pu` and `maint` from the remote repository.
138
The `pu` branch will be updated even if it is does not
139
fast-forward; the others will not be.
141
The final command then merges the newly fetched `tmp` into master.
108
144
If you tried a pull which resulted in a complex conflicts and