_<repository>_::
	The "remote" repository that is the source of a fetch
	or pull operation.  This parameter can be either a URL
	(see the section <<URLS,GIT URLS>> below) or the name
	of a remote (see the section <<REMOTES,REMOTES>> below).

ifndef::git-pull[]
_<group>_::
	A name referring to a list of repositories as the value
	of `remotes.<group>` in the configuration file.
	(See linkgit:git-config[1]).
endif::git-pull[]

[[fetch-refspec]]
_<refspec>_::
	Specifies which refs to fetch and which local refs to update.
	When no __<refspec>__s appear on the command line, the refs to fetch
	are read from `remote.<repository>.fetch` variables instead
ifndef::git-pull[]
	(see <<CRTB,CONFIGURED REMOTE-TRACKING BRANCHES>> below).
endif::git-pull[]
ifdef::git-pull[]
	(see the section "CONFIGURED REMOTE-TRACKING BRANCHES"
	in linkgit:git-fetch[1]).
endif::git-pull[]
+
The format of a _<refspec>_ parameter is an optional plus
`+`, followed by the source _<src>_, followed
by a colon `:`, followed by the destination _<dst>_.
The colon can be omitted when _<dst>_ is empty.  _<src>_ is
typically a ref, or a glob pattern with a single `*` that is used
to match a set of refs, but it can also be a fully spelled hex object
name.
+
A _<refspec>_ may contain a `*` in its _<src>_ to indicate a simple pattern
match. Such a refspec functions like a glob that matches any ref with the
pattern. A pattern _<refspec>_ must have one and only one `*` in both the _<src>_ and
_<dst>_. It will map refs to the destination by replacing the `*` with the
contents matched from the source.
+
If a refspec is prefixed by `^`, it will be interpreted as a negative
refspec. Rather than specifying which refs to fetch or which local refs to
update, such a refspec will instead specify refs to exclude. A ref will be
considered to match if it matches at least one positive refspec, and does
not match any negative refspec. Negative refspecs can be useful to restrict
the scope of a pattern refspec so that it will not include specific refs.
Negative refspecs can themselves be pattern refspecs. However, they may only
contain a _<src>_ and do not specify a _<dst>_. Fully spelled out hex object
names are also not supported.
+
`tag <tag>` means the same as `refs/tags/<tag>:refs/tags/<tag>`;
it requests fetching everything up to the given tag.
+
The remote ref that matches _<src>_
is fetched, and if _<dst>_ is not an empty string, an attempt
is made to update the local ref that matches it.
+
Whether that update is allowed without `--force` depends on the ref
namespace it's being fetched to, the type of object being fetched, and
whether the update is considered to be a fast-forward. Generally, the
same rules apply for fetching as when pushing, see the `<refspec>...`
section of linkgit:git-push[1] for what those are. Exceptions to those
rules particular to `git fetch` are noted below.
+
Until Git version 2.20, and unlike when pushing with
linkgit:git-push[1], any updates to `refs/tags/*` would be accepted
without `+` in the refspec (or `--force`). When fetching, we promiscuously
considered all tag updates from a remote to be forced fetches.  Since
Git version 2.20, fetching to update `refs/tags/*` works the same way
as when pushing. I.e. any updates will be rejected without `+` in the
refspec (or `--force`).
+
Unlike when pushing with linkgit:git-push[1], any updates outside of
`refs/{tags,heads}/*` will be accepted without `+` in the refspec (or
`--force`), whether that's swapping e.g. a tree object for a blob, or
a commit for another commit that doesn't have the previous commit as
an ancestor etc.
+
Unlike when pushing with linkgit:git-push[1], there is no
configuration which'll amend these rules, and nothing like a
`pre-fetch` hook analogous to the `pre-receive` hook.
+
As with pushing with linkgit:git-push[1], all of the rules described
above about what's not allowed as an update can be overridden by
adding an optional leading `+` to a refspec (or using the `--force`
command line option). The only exception to this is that no amount of
forcing will make the `refs/heads/*` namespace accept a non-commit
object.
+
[NOTE]
When the remote branch you want to fetch is known to
be rewound and rebased regularly, it is expected that
its new tip will not be a descendant of its previous tip
(as stored in your remote-tracking branch the last time
you fetched).  You would want
to use the `+` sign to indicate non-fast-forward updates
will be needed for such branches.  There is no way to
determine or declare that a branch will be made available
in a repository with this behavior; the pulling user simply
must know this is the expected usage pattern for a branch.
ifdef::git-pull[]
+
[NOTE]
There is a difference between listing multiple _<refspec>_
directly on `git pull` command line and having multiple
`remote.<repository>.fetch` entries in your configuration
for a _<repository>_ and running a
`git pull` command without any explicit _<refspec>_ parameters.
__<refspec>__s listed explicitly on the command line are always
merged into the current branch after fetching.  In other words,
if you list more than one remote ref, `git pull` will create
an Octopus merge.  On the other hand, if you do not list any
explicit _<refspec>_ parameter on the command line, `git pull`
will fetch all the __<refspec>__s it finds in the
`remote.<repository>.fetch` configuration and merge
only the first _<refspec>_ found into the current branch.
This is because making an
Octopus from remote refs is rarely done, while keeping track
of multiple remote heads in one-go by fetching more than one
is often useful.
endif::git-pull[]
