--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.

--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.

--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.

ifndef::git-pull[]
--dry-run::
	Show what would be done, without making any changes.
endif::git-pull[]

-f::
--force::
	When 'git fetch' is used with `<rbranch>:<lbranch>`
	refspec, it refuses to update the local branch
	`<lbranch>` unless the remote branch `<rbranch>` it
	fetches is a descendant of `<lbranch>`.  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.

-p::
--prune::
	After 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.
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].

ifndef::git-pull[]
--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.  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').

--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.

--no-recurse-submodules::
	Disable recursive fetching of submodules (this has the same effect as
	using the '--recurse-submodules=no' option).

--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.
endif::git-pull[]

-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.

--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.
