Git - git-fetch Documentation (2024)

--all

Fetch all remotes.

-a
--append

Append ref names and object names of fetched refs to theexisting contents of .git/FETCH_HEAD. Without thisoption old data in .git/FETCH_HEAD will be overwritten.

--atomic

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

--depth=<depth>

Limit fetching to the specified number of commits from the tip ofeach remote branch history. If fetching to a shallow repositorycreated by git clone with --depth=<depth> option (seegit-clone[1]), deepen or shorten the history to the specifiednumber of commits. Tags for the deepened commits are not fetched.

--deepen=<depth>

Similar to --depth, except it specifies the number of commitsfrom the current shallow boundary instead of from the tip ofeach remote branch history.

--shallow-since=<date>

Deepen or shorten the history of a shallow repository toinclude all reachable commits after <date>.

--shallow-exclude=<revision>

Deepen or shorten the history of a shallow repository toexclude 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 shallowrepository to a complete one, removing all the limitationsimposed by shallow repositories.

If the source repository is shallow, fetch as much as possible so thatthe 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 suchrefs.

--negotiation-tip=<commit|glob>

By default, Git will report, to the server, commits reachablefrom all local refs to find common commits in an attempt toreduce 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 whichlocal ref is likely to have commits in common with theupstream ref being fetched.

This option may be specified more than once; if so, Git will reportcommits reachable from any of the given commits.

The argument to this option may be a glob on ref names, a ref, or the (possiblyabbreviated) SHA-1 of a commit. Specifying a glob is equivalent to specifyingthis option multiple times, one for each matching ref name.

See also the fetch.negotiationAlgorithm configuration variabledocumented in git-config[1].

--dry-run

Show what would be done, without making any changes.

--[no-]write-fetch-head

Write the list of remote refs fetched in the FETCH_HEADfile directly under $GIT_DIR. This is the default.Passing --no-write-fetch-head from the command line tellsGit not to write the file. Under --dry-run option, thefile is never written.

-f
--force

When git fetch is used with <src>:<dst> refspec it mayrefuse to update the local branch as discussedin the <refspec> part below.This option overrides that check.

-k
--keep

Keep downloaded pack.

--multiple

Allow several <repository> and <group> arguments to bespecified. No <refspec>s may be specified.

--[no-]auto-maintenance
--[no-]auto-gc

Run git maintenance run --auto at the end to perform automaticrepository 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 configsetting fetch.writeCommitGraph.

-p
--prune

Before fetching, remove any remote-tracking references that nolonger exist on the remote. Tags are not subject to pruningif they are fetched only because of the default tagauto-following or due to a --tags option. However, if tagsare fetched due to an explicit refspec (either on the commandline or in the remote configuration, for example if the remotewas cloned with the --mirror option), then they are alsosubject to pruning. Supplying --prune-tags is a shorthand forproviding the tag refspec.

See the PRUNING section below for more details.

-P
--prune-tags

Before fetching, remove any local tags that no longer exist onthe remote if --prune is enabled. This option should be usedmore carefully, unlike --prune it will remove any localreferences (local tags) that have been created. This option isa 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.

-n
--no-tags

By default, tags that point at objects that are downloadedfrom the remote repository are fetched and stored locally.This option disables this automatic tag following. The defaultbehavior for a remote may be specified with the remote.<name>.tagOptsetting. See git-config[1].

--refmap=<refspec>

When fetching refs listed on the command line, use thespecified refspec (can be given more than once) to map therefs to remote-tracking branches, instead of the values ofremote.*.fetch configuration variables for the remoterepository. Providing an empty <refspec> to the--refmap option causes Git to ignore the configuredrefspecs and rely entirely on the refspecs supplied ascommand-line arguments. See section on "Configured Remote-trackingBranches" for details.

-t
--tags

Fetch all tags from the remote (i.e., fetch remote tagsrefs/tags/* into local tags with the same name), in additionto whatever else would otherwise be fetched. Using thisoption alone does not subject tags to pruning, even if --pruneis used (though tags may be pruned anyway if they are also thedestination of an explicit refspec; see --prune).

--recurse-submodules[=yes|on-demand|no]

This option controls if and under what conditions new commits ofpopulated submodules should be fetched too. It can be used as aboolean option to completely disable recursion when set to no or tounconditionally recurse into all populated submodules when set toyes, which is the default when this option is used without anyvalue. Use on-demand to only recurse into a populated submodulewhen the superproject retrieves a commit that updates the submodule’sreference to a commit that isn’t already in the local submoduleclone. By default, on-demand is used, unlessfetch.recurseSubmodules is set (see git-config[1]).

-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 fetchedin parallel. If multiple submodules are fetched, they will be fetched inparallel. To control them independently, use the config settingsfetch.parallel and submodule.fetchJobs (see git-config[1]).

Typically, parallel recursive and multi-remote fetches will be faster. Bydefault fetches are performed sequentially, not in parallel.

--no-recurse-submodules

Disable recursive fetching of submodules (this has the same effect asusing the --recurse-submodules=no option).

--set-upstream

If the remote is fetched successfully, add upstream(tracking) reference, used by argument-lessgit-pull[1] and other commands. For more information,see branch.<name>.merge and branch.<name>.remote ingit-config[1].

--submodule-prefix=<path>

Prepend <path> to paths printed in informative messagessuch as "Fetching submodule foo". This option is usedinternally when recursing over submodules.

--recurse-submodules-default=[yes|on-demand]

This option is used internally to temporarily provide anon-negative default value for the --recurse-submodulesoption. All other methods of configuring fetch’s submodulerecursion (such as settings in gitmodules[5] andgit-config[1]) override this option, as doesspecifying --[no-]recurse-submodules directly.

-u
--update-head-ok

By default git fetch refuses to update the head whichcorresponds to the current branch. This flag disables thecheck. This is purely for the internal use for git pullto communicate with git fetch, and unless you areimplementing your own Porcelain you are not supposed touse it.

--upload-pack <upload-pack>

When given, and the repository to fetch from is handledby git fetch-pack, --exec=<upload-pack> is passed tothe command to specify non-default path for the commandrun on the other end.

-q
--quiet

Pass --quiet to git-fetch-pack and silence any other internallyused git commands. Progress is not reported to the standard errorstream.

-v
--verbose

Be verbose.

--progress

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

-o <option>
--server-option=<option>

Transmit the given string to the server when communicating usingprotocol version 2. The given string must not contain a NUL or LFcharacter. The server’s handling of server options, includingunknown ones, is server-specific.When multiple --server-option=<option> are given, they are allsent 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 duringfetch. This can be disabled through fetch.showForcedUpdates, butthe --show-forced-updates option guarantees this check occurs.See git-config[1].

--no-show-forced-updates

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

-4
--ipv4

Use IPv4 addresses only, ignoring IPv6 addresses.

-6
--ipv6

Use IPv6 addresses only, ignoring IPv4 addresses.

<repository>

The "remote" repository that is the source of a fetchor pull operation. This parameter can be either a URL(see the section GIT URLS below) or the nameof a remote (see the section REMOTES below).

<group>

A name referring to a list of repositories as the valueof remotes.<group> in the configuration file.(See git-config[1]).

<refspec>

Specifies which refs to fetch and which local refs to update.When no <refspec>s appear on the command line, the refs to fetchare read from remote.<repository>.fetch variables instead(see CONFIGURED REMOTE-TRACKING BRANCHES below).

The format of a <refspec> parameter is an optional plus+, followed by the source <src>, followedby a colon :, followed by the destination ref <dst>.The colon can be omitted when <dst> is empty. <src> istypically a ref, but it can also be a fully spelled hex objectname.

A <refspec> may contain a * in its <src> to indicate a simple patternmatch. Such a refspec functions like a glob that matches any ref with thesame prefix. A pattern <refspec> must have a * in both the <src> and<dst>. It will map refs to the destination by replacing the * with thecontents matched from the source.

If a refspec is prefixed by ^, it will be interpreted as a negativerefspec. Rather than specifying which refs to fetch or which local refs toupdate, such a refspec will instead specify refs to exclude. A ref will beconsidered to match if it matches at least one positive refspec, and doesnot match any negative refspec. Negative refspecs can be useful to restrictthe scope of a pattern refspec so that it will not include specific refs.Negative refspecs can themselves be pattern refspecs. However, they may onlycontain a <src> and do not specify a <dst>. Fully spelled out hex objectnames 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 attemptis made to update the local ref that matches it.

Whether that update is allowed without --force depends on the refnamespace it’s being fetched to, the type of object being fetched, andwhether the update is considered to be a fast-forward. Generally, thesame rules apply for fetching as when pushing, see the <refspec>...section of git-push[1] for what those are. Exceptions to thoserules particular to git fetch are noted below.

Until Git version 2.20, and unlike when pushing withgit-push[1], any updates to refs/tags/* would be acceptedwithout + in the refspec (or --force). When fetching, we promiscuouslyconsidered all tag updates from a remote to be forced fetches. SinceGit version 2.20, fetching to update refs/tags/* works the same wayas when pushing. I.e. any updates will be rejected without + in therefspec (or --force).

Unlike when pushing with git-push[1], any updates outside ofrefs/{tags,heads}/* will be accepted without + in the refspec (or--force), whether that’s swapping e.g. a tree object for a blob, ora commit for another commit that’s doesn’t have the previous commit asan ancestor etc.

Unlike when pushing with git-push[1], there is noconfiguration which’ll amend these rules, and nothing like apre-fetch hook analogous to the pre-receive hook.

As with pushing with git-push[1], all of the rules describedabove about what’s not allowed as an update can be overridden byadding an the optional leading + to a refspec (or using --forcecommand line option). The only exception to this is that no amount offorcing will make the refs/heads/* namespace accept a non-commitobject.

Note

When the remote branch you want to fetch is known tobe rewound and rebased regularly, it is expected thatit* new tip will not be descendant of its previous tip(as stored in your remote-tracking branch the last timeyou fetched). You would wantto use the + sign to indicate non-fast-forward updateswill be needed for such branches. There is no way todetermine or declare that a branch will be made availablein a repository with this behavior; the pulling user simplymust know this is the expected usage pattern for a branch.
--stdin

Read refspecs, one per line, from stdin in addition to those providedas arguments. The "tag <name>" format is not supported.

Git - git-fetch Documentation (2024)
Top Articles
Is earthquake insurance worth the cost?
4 Days in Kuala Lumpur: The Ultimate Kuala Lumpur Itinerary
Garrison Blacksmith Bench
Windcrest Little League Baseball
Wordscapes Level 5130 Answers
1970 Chevrolet Chevelle SS - Skyway Classics
Polyhaven Hdri
Bbc 5Live Schedule
LA Times Studios Partners With ABC News on Randall Emmett Doc Amid #Scandoval Controversy
The Binding of Isaac
Craigslist Boats For Sale Seattle
Citymd West 146Th Urgent Care - Nyc Photos
Equipamentos Hospitalares Diversos (Lote 98)
Sprinkler Lv2
V-Pay: Sicherheit, Kosten und Alternativen - BankingGeek
Delaware Skip The Games
Air Traffic Control Coolmathgames
How to Download and Play Ultra Panda on PC ?
Disputes over ESPN, Disney and DirecTV go to the heart of TV's existential problems
Foolproof Module 6 Test Answers
Walmart Pharmacy Near Me Open
Best Middle Schools In Queens Ny
Skymovieshd.ib
Roseann Marie Messina · 15800 Detroit Ave, Suite D, Lakewood, OH 44107-3748 · Lay Midwife
3473372961
ShadowCat - Forestry Mulching, Land Clearing, Bush Hog, Brush, Bobcat - farm & garden services - craigslist
Devotion Showtimes Near Mjr Universal Grand Cinema 16
Rogers Centre is getting a $300M reno. Here's what the Blue Jays ballpark will look like | CBC News
Craigslist Georgia Homes For Sale By Owner
Midsouthshooters Supply
Wal-Mart 2516 Directory
The Transformation Of Vanessa Ray From Childhood To Blue Bloods - Looper
Zasilacz Dell G3 15 3579
Busch Gardens Wait Times
Cal Poly 2027 College Confidential
Gateway Bible Passage Lookup
Torrid Rn Number Lookup
Sound Of Freedom Showtimes Near Lewisburg Cinema 8
COVID-19/Coronavirus Assistance Programs | FindHelp.org
Random Animal Hybrid Generator Wheel
Centimeters to Feet conversion: cm to ft calculator
Csgold Uva
Craigslist St Helens
Zipformsonline Plus Login
St Anthony Hospital Crown Point Visiting Hours
Jane Powell, MGM musical star of 'Seven Brides for Seven Brothers,' 'Royal Wedding,' dead at 92
Bbwcumdreams
Understanding & Applying Carroll's Pyramid of Corporate Social Responsibility
Publix Store 840
Estes4Me Payroll
Cbs Scores Mlb
Latest Posts
Article information

Author: Manual Maggio

Last Updated:

Views: 6623

Rating: 4.9 / 5 (69 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Manual Maggio

Birthday: 1998-01-20

Address: 359 Kelvin Stream, Lake Eldonview, MT 33517-1242

Phone: +577037762465

Job: Product Hospitality Supervisor

Hobby: Gardening, Web surfing, Video gaming, Amateur radio, Flag Football, Reading, Table tennis

Introduction: My name is Manual Maggio, I am a thankful, tender, adventurous, delightful, fantastic, proud, graceful person who loves writing and wants to share my knowledge and understanding with you.