'\" t .\" Title: git-pull .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 06/06/2021 .\" Manual: Git Manual .\" Source: Git 2.30.2 .\" Language: English .\" .TH "GIT\-PULL" "1" "06/06/2021" "Git 2\&.30\&.2" "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 integrate with another repository or a local branch .SH "SYNOPSIS" .sp .nf \fIgit pull\fR [] [ [\&...]] .fi .sp .SH "DESCRIPTION" .sp Incorporates changes from a remote repository into the current branch\&. In its default mode, \fBgit pull\fR is shorthand for \fBgit fetch\fR followed by \fBgit merge FETCH_HEAD\fR\&. .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 \fB\-\-rebase\fR, 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) \fB\-\-track\fR\&. .sp Assume the following history exists and the current branch is "\fBmaster\fR": .sp .if n \{\ .RS 4 .\} .nf A\-\-\-B\-\-\-C master on origin / D\-\-\-E\-\-\-F\-\-\-G master ^ origin/master in your repository .fi .if n \{\ .RE .\} .sp .sp Then "\fBgit pull\fR" will fetch and replay the changes from the remote \fBmaster\fR branch since it diverged from the local \fBmaster\fR (i\&.e\&., \fBE\fR) until its current commit (\fBC\fR) on top of \fBmaster\fR 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 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 \fBgit reset \-\-merge\fR\&. \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 canceled 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" .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 populated submodules should be fetched, and if the working trees of active submodules should be updated, too (see \fBgit-fetch\fR(1), \fBgit-config\fR(1) and \fBgitmodules\fR(5))\&. .sp If the checkout is done via rebase, local submodule commits are rebased as well\&. .sp If the update is done via merge, the submodule conflicts are resolved and checked out\&. .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 and stop just before creating a merge commit, to give the user a chance to inspect and further tweak the merge result before committing\&. .sp Note that fast\-forward updates do not create a merge commit and therefore there is no way to stop those merges with \-\-no\-commit\&. Thus, if you want to ensure your branch is not changed or updated by the merge command, use \-\-no\-ff with \-\-no\-commit\&. .RE .PP \-\-edit, \-e, \-\-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 \fB\-\-no\-edit\fR option can be used to accept the auto\-generated message (this is generally discouraged)\&. .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 \fBgit merge\fR\&. To make it easier to adjust such scripts to the updated behaviour, the environment variable \fBGIT_MERGE_AUTOEDIT\fR can be set to \fBno\fR at the beginning of them\&. .RE .PP \-\-cleanup= .RS 4 This option determines how the merge message will be cleaned up before committing\&. See \fBgit-commit\fR(1) for more details\&. In addition, if the \fI\fR is given a value of \fBscissors\fR, scissors will be appended to \fBMERGE_MSG\fR before being passed on to the commit machinery in the case of a merge conflict\&. .RE .PP \-\-ff, \-\-no\-ff, \-\-ff\-only .RS 4 Specifies how a merge is handled when the merged\-in history is already a descendant of the current history\&. \fB\-\-ff\fR is the default unless merging an annotated (and possibly signed) tag that is not stored in its natural place in the \fBrefs/tags/\fR hierarchy, in which case \fB\-\-no\-ff\fR is assumed\&. .sp With \fB\-\-ff\fR, when possible resolve the merge as a fast\-forward (only update the branch pointer to match the merged branch; do not create a merge commit)\&. When not possible (when the merged\-in history is not a descendant of the current history), create a merge commit\&. .sp With \fB\-\-no\-ff\fR, create a merge commit in all cases, even when the merge could instead be resolved as a fast\-forward\&. .sp With \fB\-\-ff\-only\fR, resolve the merge as a fast\-forward when possible\&. When not possible, refuse to merge and exit with a non\-zero status\&. .RE .PP \-S[], \-\-gpg\-sign[=], \-\-no\-gpg\-sign .RS 4 GPG\-sign the resulting merge commit\&. The \fBkeyid\fR argument is optional and defaults to the committer identity; if specified, it must be stuck to the option without a space\&. \fB\-\-no\-gpg\-sign\fR is useful to countermand both \fBcommit\&.gpgSign\fR configuration variable, and earlier \fB\-\-gpg\-sign\fR\&. .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 \-\-signoff, \-\-no\-signoff .RS 4 Add a \fBSigned\-off\-by\fR trailer by the committer at the end of the commit log message\&. The meaning of a signoff depends on the project to which you\(cqre committing\&. For example, it may certify that the committer has the rights to submit the work under the project\(cqs license or agrees to some contributor representation, such as a Developer Certificate of Origin\&. (See \m[blue]\fBhttp://developercertificate\&.org\fR\m[] for the one used by the Linux kernel and Git projects\&.) Consult the documentation or leadership of the project to which you\(cqre contributing to understand how the signoffs are used in that project\&. .sp The \-\-no\-signoff option can be used to countermand an earlier \-\-signoff option on the command line\&. .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, move the \fBHEAD\fR, or record \fB$GIT_DIR/MERGE_HEAD\fR (to cause the next \fBgit commit\fR 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\&. .sp With \-\-squash, \-\-commit is not allowed, and will fail\&. .RE .PP \-\-no\-verify .RS 4 This option bypasses the pre\-merge and commit\-msg hooks\&. See also \fBgithooks\fR(5)\&. .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 \fB\-s\fR 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