| `--all`:: | |
| `--no-all`:: | |
| Fetch all remotes, except for the ones that have the | |
| `remote.<name>.skipFetchAll` configuration variable set. | |
| This overrides the configuration variable `fetch.all`. | |
| `-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=<ref>`:: | |
| 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 accepts such | |
| refs. | |
| `--negotiation-restrict=(<commit>|<glob>)`:: | |
| `--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. | |
| + | |
| `--negotiation-restrict` is the preferred name for this option; | |
| `--negotiation-tip` is accepted as a synonym. | |
| + | |
| 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` and `push.negotiate` | |
| configuration variables documented in linkgit:git-config[1], and the | |
| `--negotiate-only` option below. | |
| `--negotiation-include=(<commit>|<glob>)`:: | |
| Ensure that the commits at the given tips are always sent as "have" | |
| lines during fetch negotiation, regardless of what the negotiation | |
| algorithm selects. This is useful to guarantee that common | |
| history reachable from specific refs is always considered, even | |
| when `--negotiation-restrict` restricts the set of tips or when | |
| the negotiation algorithm would otherwise skip them. | |
| + | |
| This option may be specified more than once; if so, each commit is sent | |
| unconditionally. | |
| + | |
| The argument may be an exact ref name (e.g. `refs/heads/release`), an | |
| object hash, or a glob pattern (e.g. `refs/heads/release/{asterisk}`). | |
| The pattern syntax is the same as for `--negotiation-restrict`. | |
| + | |
| If `--negotiation-restrict` is used, the have set is first restricted by | |
| that option and then increased to include the tips specified by | |
| `--negotiation-include`. | |
| + | |
| If this option is not specified on the command line, then any | |
| `remote.<name>.negotiationInclude` config values for the current remote | |
| are used instead. | |
| `--negotiate-only`:: | |
| Do not fetch anything from the server, and instead print the | |
| ancestors of the provided `--negotiation-restrict=` arguments, | |
| which we have in common with the server. | |
| + | |
| This is incompatible with `--recurse-submodules=(yes|on-demand)`. | |
| Internally this is used to implement the `push.negotiate` option, see | |
| linkgit:git-config[1]. | |
| `--dry-run`:: | |
| Show what would be done, without making any changes. | |
| `--porcelain`:: | |
| Print the output to standard output in an easy-to-parse format for | |
| scripts. See section OUTPUT in linkgit:git-fetch[1] for details. | |
| + | |
| This is incompatible with `--recurse-submodules=(yes|on-demand)` and takes | |
| precedence over the `fetch.output` config option. | |
| `--filter=<filter-spec>`:: | |
| Use the partial clone feature and request that the server sends | |
| a subset of reachable objects according to a given object filter. | |
| When using `--filter`, the supplied _<filter-spec>_ is used for | |
| the partial fetch. | |
| + | |
| If `--filter=auto` is used, the filter specification is determined | |
| automatically by combining the filter specifications advertised by | |
| the server for the promisor remotes that the client accepts (see | |
| linkgit:gitprotocol-v2[5] and the `promisor.acceptFromServer` | |
| configuration option in linkgit:git-config[1]). | |
| + | |
| For details on all other available filter specifications, see the | |
| `--filter=<filter-spec>` option in linkgit:git-rev-list[1]. | |
| + | |
| For example, `--filter=blob:none` will filter out all blobs (file | |
| contents) until needed by Git. Also, `--filter=blob:limit=<size>` will | |
| filter out all blobs of size at least _<size>_. | |
| ifndef::git-pull[] | |
| `--write-fetch-head`:: | |
| `--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`:: | |
| ifdef::git-pull[] | |
| When `git fetch` is used with `<src>:<dst>` refspec, it may | |
| refuse to update the local branch as discussed | |
| in the _<refspec>_ part of the linkgit:git-fetch[1] | |
| documentation. | |
| endif::git-pull[] | |
| ifndef::git-pull[] | |
| When `git fetch` is used with `<src>:<dst>` refspec, it may | |
| refuse to update the local branch as discussed 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. | |
| `--auto-maintenance`:: | |
| `--no-auto-maintenance`:: | |
| `--auto-gc`:: | |
| `--no-auto-gc`:: | |
| Run `git maintenance run --auto` at the end to perform automatic | |
| repository maintenance if needed. | |
| This is enabled by default. | |
| `--write-commit-graph`:: | |
| `--no-write-commit-graph`:: | |
| Write a commit-graph after fetching. This overrides the config | |
| setting `fetch.writeCommitGraph`. | |
| endif::git-pull[] | |
| `--prefetch`:: | |
| Modify the configured refspec to place all refs into the | |
| `refs/prefetch/` namespace. See the `prefetch` task in | |
| linkgit:git-maintenance[1]. | |
| `-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]. | |
| ifndef::git-pull[] | |
| `--refetch`:: | |
| Instead of negotiating with the server to avoid transferring commits and | |
| associated objects that are already present locally, this option fetches | |
| all objects as a fresh clone would. Use this to reapply a partial clone | |
| filter from configuration or using `--filter=` when the filter | |
| definition has changed. Automatic post-fetch maintenance will perform | |
| object database pack consolidation to remove any duplicate objects. | |
| endif::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.<name>.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)]`:: | |
| Control if and under what conditions new commits of | |
| submodules should be fetched too. When recursing through submodules, | |
| `git fetch` always attempts to fetch "changed" submodules, that is, a | |
| submodule that has commits that are referenced by a newly fetched | |
| superproject commit but are missing in the local submodule clone. A | |
| changed submodule can be fetched as long as it is present locally e.g. | |
| in `$GIT_DIR/modules/` (see linkgit:gitsubmodules[7]); if the upstream | |
| adds a new submodule, that submodule cannot be fetched until it is | |
| cloned e.g. by `git submodule update`. | |
| + | |
| When set to `on-demand`, only changed submodules are fetched. When set | |
| to `yes`, all populated submodules are fetched and submodules that are | |
| both unpopulated and changed are fetched. When set to `no`, submodules | |
| are never fetched. | |
| + | |
| When unspecified, this uses the value of `fetch.recurseSubmodules` if it | |
| is set (see linkgit:git-config[1]), defaulting to `on-demand` if unset. | |
| When this option is used without any value, it defaults to `yes`. | |
| endif::git-pull[] | |
| `-j <n>`:: | |
| `--jobs=<n>`:: | |
| Parallelize all forms of fetching up to _<n>_ jobs at a time. | |
| + | |
| A value of 0 will use some reasonable default. | |
| + | |
| 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. | |
| When no `--server-option=<option>` is given from the command line, | |
| the values of configuration variable `remote.<name>.serverOption` | |
| are used instead. | |
| `--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. |