Merge branch 'je/doc-pull' into jch

Documentation updates.

* je/doc-pull:
  doc: git-pull: clarify how to exit a conflicted merge
  doc: git-pull: delete the example
  doc: git-pull: clarify options for integrating remote branch
  doc: git-pull: move <repository> and <refspec> params
seen
Junio C Hamano 2025-10-06 14:31:21 -07:00
commit 020584a409
1 changed files with 32 additions and 54 deletions

View File

@ -15,68 +15,46 @@ SYNOPSIS
DESCRIPTION
-----------

Incorporates changes from a remote repository into the current branch.
If the current branch is behind the remote, then by default it will
fast-forward the current branch to match the remote. If the current
branch and the remote have diverged, the user needs to specify how to
reconcile the divergent branches with `--rebase` or `--no-rebase` (or
the corresponding configuration option in `pull.rebase`).
Integrate changes from a remote repository into the current branch.

More precisely, `git pull` runs `git fetch` with the given parameters
and then depending on configuration options or command line flags,
will call either `git rebase` or `git merge` to reconcile diverging
branches.
First, `git pull` runs `git fetch` with the same arguments to fetch
remote branch(es). Then it integrates the remote branch into the current
branch. There are 4 main options for integrating the remote branch:

<repository> should be the name of a remote repository as
passed to linkgit:git-fetch[1]. <refspec> 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/{asterisk}:refs/remotes/origin/{asterisk}),
but usually it is the name of a branch in the remote repository.
1. `git pull --ff-only` will only do "fast-forward" updates: it
fails if the remote branch has diverged. This is the default.
2. `git pull --rebase` runs `git rebase`
3. `git pull --no-rebase` runs `git merge`.
4. `git pull --squash` runs `git merge --squash`

Default values for <repository> and <branch> are read from the
"remote" and "merge" configuration for the current branch
as set by linkgit:git-branch[1] `--track`.
You can also set the configuration options `pull.rebase`, `pull.squash`,
or `pull.ff` with your preferred behaviour.

Assume the following history exists and the current branch is
"`master`":

------------
A---B---C master on origin
/
D---E---F---G master
^
origin/master in your repository
------------

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.

------------
A---B---C origin/master
/ \
D---E---F---G---H master
------------

See linkgit:git-merge[1] for details, including how conflicts
are presented and handled.

In Git 1.7.0 or later, to cancel a conflicting merge, use
`git reset --merge`. *Warning*: In older versions of Git, running 'git pull'
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.

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 linkgit:git-stash[1].
If there's a merge conflict during the merge or rebase that you don't
want to handle, you can safely abort it with `git merge --abort` or `git
--rebase abort`.

OPTIONS
-------

<repository>::
The "remote" repository to pull from. This can be either
a URL (see the section <<URLS,GIT URLS>> below) or the name
of a remote (see the section <<REMOTES,REMOTES>> below).
+
Defaults to the configured upstream for the current branch, or `origin`.
See UPSTREAM BRANCHES below for more on how to configure upstreams.

<refspec>::
Which branch or other reference(s) to fetch and integrate into the
current branch, for example `main` in `git pull origin main`.
Defaults to the configured upstream for the current branch.
+
This can be a branch, tag, or other collection of reference(s).
See <refspec> below under "Options related to fetching" for the full syntax,
and DEFAULT BEHAVIOUR below for how `git pull` uses this argument to
determine which remote branch to integrate.

-q::
--quiet::
This is passed to both underlying git-fetch to squelch reporting of