'\" t
.\" Title: git-pull
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.76.1
.\" Date: 03/19/2016
.\" Manual: Git Manual
.\" Source: Git 1.7.10.4
.\" Language: English
.\"
.TH "GIT\-PULL" "1" "03/19/2016" "Git 1\&.7\&.10\&.4" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-pull \- Fetch from and merge with another repository or a local branch
.SH "SYNOPSIS"
.sp
.nf
\fIgit pull\fR [options] [ [\&...]]
.fi
.sp
.SH "DESCRIPTION"
.sp
Incorporates changes from a remote repository into the current branch\&. In its default mode, git pull is shorthand for git fetch followed by git merge FETCH_HEAD\&.
.sp
More precisely, \fIgit pull\fR runs \fIgit fetch\fR with the given parameters and calls \fIgit merge\fR to merge the retrieved branch heads into the current branch\&. With \-\-rebase, it runs \fIgit rebase\fR instead of \fIgit merge\fR\&.
.sp
should be the name of a remote repository as passed to \fBgit-fetch\fR(1)\&. can name an arbitrary remote ref (for example, the name of a tag) or even a collection of refs with corresponding remote\-tracking branches (e\&.g\&., refs/heads/*:refs/remotes/origin/*), but usually it is the name of a branch in the remote repository\&.
.sp
Default values for and are read from the "remote" and "merge" configuration for the current branch as set by \fBgit-branch\fR(1) \-\-track\&.
.sp
Assume the following history exists and the current branch is "master":
.sp
.if n \{\
.RS 4
.\}
.nf
A\-\-\-B\-\-\-C master on origin
/
D\-\-\-E\-\-\-F\-\-\-G master
.fi
.if n \{\
.RE
.\}
.sp
.sp
Then "git pull" will fetch and replay the changes from the remote master branch since it diverged from the local master (i\&.e\&., E) until its current commit (C) on top of master and record the result in a new commit along with the names of the two parent commits and a log message from the user describing the changes\&.
.sp
.if n \{\
.RS 4
.\}
.nf
A\-\-\-B\-\-\-C remotes/origin/master
/ \e
D\-\-\-E\-\-\-F\-\-\-G\-\-\-H master
.fi
.if n \{\
.RE
.\}
.sp
.sp
See \fBgit-merge\fR(1) for details, including how conflicts are presented and handled\&.
.sp
In git 1\&.7\&.0 or later, to cancel a conflicting merge, use git reset \-\-merge\&. \fBWarning\fR: In older versions of git, running \fIgit pull\fR with uncommitted changes is discouraged: while possible, it leaves you in a state that may be hard to back out of in the case of a conflict\&.
.sp
If any of the remote changes overlap with local uncommitted changes, the merge will be automatically cancelled and the work tree untouched\&. It is generally best to get any local changes in working order before pulling or stash them away with \fBgit-stash\fR(1)\&.
.SH "OPTIONS"
.sp
Options meant for \fIgit pull\fR itself and the underlying \fIgit merge\fR must be given before the options meant for \fIgit fetch\fR\&.
.PP
\-q, \-\-quiet
.RS 4
This is passed to both underlying git\-fetch to squelch reporting of during transfer, and underlying git\-merge to squelch output during merging\&.
.RE
.PP
\-v, \-\-verbose
.RS 4
Pass \-\-verbose to git\-fetch and git\-merge\&.
.RE
.PP
\-\-[no\-]recurse\-submodules[=yes|on\-demand|no]
.RS 4
This option controls if new commits of all populated submodules should be fetched too (see
\fBgit-config\fR(1)
and
\fBgitmodules\fR(5))\&. That might be necessary to get the data needed for merging submodule commits, a feature git learned in 1\&.7\&.3\&. Notice that the result of a merge will not be checked out in the submodule, "git submodule update" has to be called afterwards to bring the work tree up to date with the merge result\&.
.RE
.SS "Options related to merging"
.PP
\-\-commit, \-\-no\-commit
.RS 4
Perform the merge and commit the result\&. This option can be used to override \-\-no\-commit\&.
.sp
With \-\-no\-commit perform the merge but pretend the merge failed and do not autocommit, to give the user a chance to inspect and further tweak the merge result before committing\&.
.RE
.PP
\-\-edit, \-\-no\-edit
.RS 4
Invoke an editor before committing successful mechanical merge to further edit the auto\-generated merge message, so that the user can explain and justify the merge\&. The
\-\-no\-edit
option can be used to accept the auto\-generated message (this is generally discouraged)\&. The
\-\-edit
option is still useful if you are giving a draft message with the
\-m
option from the command line and want to edit it in the editor\&.
.sp
Older scripts may depend on the historical behaviour of not allowing the user to edit the merge log message\&. They will see an editor opened when they run
git merge\&. To make it easier to adjust such scripts to the updated behaviour, the environment variable
GIT_MERGE_AUTOEDIT
can be set to
no
at the beginning of them\&.
.RE
.PP
\-\-ff
.RS 4
When the merge resolves as a fast\-forward, only update the branch pointer, without creating a merge commit\&. This is the default behavior\&.
.RE
.PP
\-\-no\-ff
.RS 4
Create a merge commit even when the merge resolves as a fast\-forward\&.
.RE
.PP
\-\-ff\-only
.RS 4
Refuse to merge and exit with a non\-zero status unless the current
HEAD
is already up\-to\-date or the merge can be resolved as a fast\-forward\&.
.RE
.PP
\-\-log[=], \-\-no\-log
.RS 4
In addition to branch names, populate the log message with one\-line descriptions from at most actual commits that are being merged\&. See also
\fBgit-fmt-merge-msg\fR(1)\&.
.sp
With \-\-no\-log do not list one\-line descriptions from the actual commits being merged\&.
.RE
.PP
\-\-stat, \-n, \-\-no\-stat
.RS 4
Show a diffstat at the end of the merge\&. The diffstat is also controlled by the configuration option merge\&.stat\&.
.sp
With \-n or \-\-no\-stat do not show a diffstat at the end of the merge\&.
.RE
.PP
\-\-squash, \-\-no\-squash
.RS 4
Produce the working tree and index state as if a real merge happened (except for the merge information), but do not actually make a commit or move the
HEAD, nor record
$GIT_DIR/MERGE_HEAD
to cause the next
git commit
command to create a merge commit\&. This allows you to create a single commit on top of the current branch whose effect is the same as merging another branch (or more in case of an octopus)\&.
.sp
With \-\-no\-squash perform the merge and commit the result\&. This option can be used to override \-\-squash\&.
.RE
.PP
\-s , \-\-strategy=
.RS 4
Use the given merge strategy; can be supplied more than once to specify them in the order they should be tried\&. If there is no
\-s
option, a built\-in list of strategies is used instead (\fIgit merge\-recursive\fR
when merging a single head,
\fIgit merge\-octopus\fR
otherwise)\&.
.RE
.PP
\-X