--all::
	Fetch all remotes.

-a::
--append::
	Append ref names and object names of fetched refs to the
	existing contents of `.git/FETCH_HEAD`.  Without this
	option old data in `.git/FETCH_HEAD` will be overwritten.

--atomic::
	Use an atomic transaction to update local refs. Either all refs are
	updated, or on error, no refs are updated.

--depth=<depth>::
	Limit fetching to the specified number of commits from the tip of
	each remote branch history. If fetching to a 'shallow' repository
	created by `git clone` with `--depth=<depth>` option (see
	linkgit:git-clone[1]), deepen or shorten the history to the specified
	number of commits. Tags for the deepened commits are not fetched.

--deepen=<depth>::
	Similar to --depth, except it specifies the number of commits
	from the current shallow boundary instead of from the tip of
	each remote branch history.

--shallow-since=<date>::
	Deepen or shorten the history of a shallow repository to
	include all reachable commits after <date>.

--shallow-exclude=<revision>::
	Deepen or shorten the history of a shallow repository to
	exclude commits reachable from a specified remote branch or tag.
	This option can be specified multiple times.

--unshallow::
	If the source repository is complete, convert a shallow
	repository to a complete one, removing all the limitations
	imposed by shallow repositories.
+
If the source repository is shallow, fetch as much as possible so that
the current repository has the same history as the source repository.

--update-shallow::
	By default when fetching from a shallow repository,
	`git fetch` refuses refs that require updating
	.git/shallow. This option updates .git/shallow and accept such
	refs.

--negotiation-tip=<commit|glob>::
	By default, Git will report, to the server, commits reachable
	from all local refs to find common commits in an attempt to
	reduce the size of the to-be-received packfile. If specified,
	Git will only report commits reachable from the given tips.
	This is useful to speed up fetches when the user knows which
	local ref is likely to have commits in common with the
	upstream ref being fetched.
+
This option may be specified more than once; if so, Git will report
commits reachable from any of the given commits.
+
The argument to this option may be a glob on ref names, a ref, or the (possibly
abbreviated) SHA-1 of a commit. Specifying a glob is equivalent to specifying
this option multiple times, one for each matching ref name.
+
See also the `fetch.negotiationAlgorithm` configuration variable
documented in linkgit:git-config[1].

--dry-run::
	Show what would be done, without making any changes.

ifndef::git-pull[]
--[no-]write-fetch-head::
	Write the list of remote refs fetched in the `FETCH_HEAD`
	file directly under `$GIT_DIR`.  This is the default.
	Passing `--no-write-fetch-head` from the command line tells
	Git not to write the file.  Under `--dry-run` option, the
	file is never written.
endif::git-pull[]

-f::
--force::
	When 'git fetch' is used with `<src>:<dst>` refspec it may
	refuse to update the local branch as discussed
ifdef::git-pull[]
	in the `<refspec>` part of the linkgit:git-fetch[1]
	documentation.
endif::git-pull[]
ifndef::git-pull[]
	in the `<refspec>` part below.
endif::git-pull[]
	This option overrides that check.

-k::
--keep::
	Keep downloaded pack.

ifndef::git-pull[]
--multiple::
	Allow several <repository> and <group> arguments to be
	specified. No <refspec>s may be specified.

--[no-]auto-maintenance::
--[no-]auto-gc::
	Run `git maintenance run --auto` at the end to perform automatic
	repository maintenance if needed. (`--[no-]auto-gc` is a synonym.)
	This is enabled by default.

--[no-]write-commit-graph::
	Write a commit-graph after fetching. This overrides the config
	setting `fetch.writeCommitGraph`.
endif::git-pull[]

-p::
--prune::
	Before fetching, remove any remote-tracking references that no
	longer exist on the remote.  Tags are not subject to pruning
	if they are fetched only because of the default tag
	auto-following or due to a --tags option.  However, if tags
	are fetched due to an explicit refspec (either on the command
	line or in the remote configuration, for example if the remote
	was cloned with the --mirror option), then they are also
	subject to pruning. Supplying `--prune-tags` is a shorthand for
	providing the tag refspec.
ifndef::git-pull[]
+
See the PRUNING section below for more details.

-P::
--prune-tags::
	Before fetching, remove any local tags that no longer exist on
	the remote if `--prune` is enabled. This option should be used
	more carefully, unlike `--prune` it will remove any local
	references (local tags) that have been created. This option is
	a shorthand for providing the explicit tag refspec along with
	`--prune`, see the discussion about that in its documentation.
+
See the PRUNING section below for more details.

endif::git-pull[]

ifndef::git-pull[]
-n::
endif::git-pull[]
--no-tags::
	By default, tags that point at objects that are downloaded
	from the remote repository are fetched and stored locally.
	This option disables this automatic tag following. The default
	behavior for a remote may be specified with the remote.<name>.tagOpt
	setting. See linkgit:git-config[1].

--refmap=<refspec>::
	When fetching refs listed on the command line, use the
	specified refspec (can be given more than once) to map the
	refs to remote-tracking branches, instead of the values of
	`remote.*.fetch` configuration variables for the remote
	repository.  Providing an empty `<refspec>` to the
	`--refmap` option causes Git to ignore the configured
	refspecs and rely entirely on the refspecs supplied as
	command-line arguments. See section on "Configured Remote-tracking
	Branches" for details.

-t::
--tags::
	Fetch all tags from the remote (i.e., fetch remote tags
	`refs/tags/*` into local tags with the same name), in addition
	to whatever else would otherwise be fetched.  Using this
	option alone does not subject tags to pruning, even if --prune
	is used (though tags may be pruned anyway if they are also the
	destination of an explicit refspec; see `--prune`).

ifndef::git-pull[]
--recurse-submodules[=yes|on-demand|no]::
	This option controls if and under what conditions new commits of
	populated submodules should be fetched too. It can be used as a
	boolean option to completely disable recursion when set to 'no' or to
	unconditionally recurse into all populated submodules when set to
	'yes', which is the default when this option is used without any
	value. Use 'on-demand' to only recurse into a populated submodule
	when the superproject retrieves a commit that updates the submodule's
	reference to a commit that isn't already in the local submodule
	clone. By default, 'on-demand' is used, unless
	`fetch.recurseSubmodules` is set (see linkgit:git-config[1]).
endif::git-pull[]

-j::
--jobs=<n>::
	Number of parallel children to be used for all forms of fetching.
+
If the `--multiple` option was specified, the different remotes will be fetched
in parallel. If multiple submodules are fetched, they will be fetched in
parallel. To control them independently, use the config settings
`fetch.parallel` and `submodule.fetchJobs` (see linkgit:git-config[1]).
+
Typically, parallel recursive and multi-remote fetches will be faster. By
default fetches are performed sequentially, not in parallel.

ifndef::git-pull[]
--no-recurse-submodules::
	Disable recursive fetching of submodules (this has the same effect as
	using the `--recurse-submodules=no` option).
endif::git-pull[]

--set-upstream::
	If the remote is fetched successfully, add upstream
	(tracking) reference, used by argument-less
	linkgit:git-pull[1] and other commands. For more information,
	see `branch.<name>.merge` and `branch.<name>.remote` in
	linkgit:git-config[1].

ifndef::git-pull[]
--submodule-prefix=<path>::
	Prepend <path> to paths printed in informative messages
	such as "Fetching submodule foo".  This option is used
	internally when recursing over submodules.

--recurse-submodules-default=[yes|on-demand]::
	This option is used internally to temporarily provide a
	non-negative default value for the --recurse-submodules
	option.  All other methods of configuring fetch's submodule
	recursion (such as settings in linkgit:gitmodules[5] and
	linkgit:git-config[1]) override this option, as does
	specifying --[no-]recurse-submodules directly.

-u::
--update-head-ok::
	By default 'git fetch' refuses to update the head which
	corresponds to the current branch.  This flag disables the
	check.  This is purely for the internal use for 'git pull'
	to communicate with 'git fetch', and unless you are
	implementing your own Porcelain you are not supposed to
	use it.
endif::git-pull[]

--upload-pack <upload-pack>::
	When given, and the repository to fetch from is handled
	by 'git fetch-pack', `--exec=<upload-pack>` is passed to
	the command to specify non-default path for the command
	run on the other end.

ifndef::git-pull[]
-q::
--quiet::
	Pass --quiet to git-fetch-pack and silence any other internally
	used git commands. Progress is not reported to the standard error
	stream.

-v::
--verbose::
	Be verbose.
endif::git-pull[]

--progress::
	Progress status is reported on the standard error stream
	by default when it is attached to a terminal, unless -q
	is specified. This flag forces progress status even if the
	standard error stream is not directed to a terminal.

-o <option>::
--server-option=<option>::
	Transmit the given string to the server when communicating using
	protocol version 2.  The given string must not contain a NUL or LF
	character.  The server's handling of server options, including
	unknown ones, is server-specific.
	When multiple `--server-option=<option>` are given, they are all
	sent to the other side in the order listed on the command line.

--show-forced-updates::
	By default, git checks if a branch is force-updated during
	fetch. This can be disabled through fetch.showForcedUpdates, but
	the --show-forced-updates option guarantees this check occurs.
	See linkgit:git-config[1].

--no-show-forced-updates::
	By default, git checks if a branch is force-updated during
	fetch. Pass --no-show-forced-updates or set fetch.showForcedUpdates
	to false to skip this check for performance reasons. If used during
	'git-pull' the --ff-only option will still check for forced updates
	before attempting a fast-forward update. See linkgit:git-config[1].

-4::
--ipv4::
	Use IPv4 addresses only, ignoring IPv6 addresses.

-6::
--ipv6::
	Use IPv6 addresses only, ignoring IPv4 addresses.
