1538c8920c
Previously were trying to support tags too, but this is too expensive. There's no commit date on a tag object so you can't interleave them in the list effectively, would have to use %(taggerdate) in a second call which is non-optimal but also wrong (could tag retrospectively). Only way to get tags on the same basis as branches is to query each tag's dereferenced commit separately which won't scale. Users can always fetch tags on the command line if they want anyway. Doing this also lets us get the commitdate as part of the for-each-ref which is much more efficient.
130 lines
4.2 KiB
Markdown
130 lines
4.2 KiB
Markdown
git-lfs-fetch(1) -- Download all Git LFS files for a given ref
|
|
==============================================================
|
|
|
|
## SYNOPSIS
|
|
|
|
`git lfs fetch` [options] [<remote> [<ref>...]]
|
|
|
|
## DESCRIPTION
|
|
|
|
Download Git LFS objects at the given refs from the specified remote. See
|
|
[DEFAULT REMOTE] and [DEFAULT REFS] for what happens if you don't specify.
|
|
|
|
This does not update the working copy.
|
|
|
|
## OPTIONS
|
|
|
|
* `-I` <paths> `--include=`<paths>:
|
|
Specify lfs.fetchinclude just for this invocation; see [INCLUDE AND EXCLUDE]
|
|
|
|
* `-X` <paths> `--exclude=`<paths>:
|
|
Specify lfs.fetchexclude just for this invocation; see [INCLUDE AND EXCLUDE]
|
|
|
|
* `--recent`:
|
|
Download objects referenced by recent branches & commits in addition to those
|
|
that would otherwise be downloaded. See [RECENT CHANGES]
|
|
|
|
## INCLUDE AND EXCLUDE
|
|
|
|
You can configure Git LFS to only fetch objects to satisfy references in certain
|
|
paths of the repo, and/or to exclude certain paths of the repo, to reduce the
|
|
time you spend downloading things you do not use.
|
|
|
|
In gitconfig, set lfs.fetchinclude and lfs.fetchexclude to comma-separated lists
|
|
of paths to include/exclude in the fetch (wildcard matching as per gitignore).
|
|
Only paths which are matched by fetchinclude and not matched by fetchexclude
|
|
will have objects fetched for them.
|
|
|
|
### Examples:
|
|
|
|
* `git config lfs.fetchinclude="textures,images/foo*"`
|
|
|
|
This will only fetch objects referenced in paths in the textures folder, and
|
|
files called foo* in the images folder
|
|
|
|
* `git config lfs.fetchinclude="*.jpg,*.png,*.tga"`
|
|
|
|
Only fetch JPG/PNG/TGA files, wherever they are in the repository
|
|
|
|
* `git config lfs.fetchexclude="media/reallybigfiles"`
|
|
|
|
Don't fetch any LFS objects referenced in the folder media/reallybigfiles, but
|
|
fetch everything else
|
|
|
|
* `git config lfs.fetchinclude="media"`<br/>
|
|
`git config lfs.fetchexclude="media/excessive"`
|
|
|
|
Only fetch LFS objects in the 'media' folder, but exclude those in one of its
|
|
subfolders.
|
|
|
|
## DEFAULT REMOTE
|
|
|
|
Without arguments, fetch downloads from the default remote. The default remote
|
|
is the same as for `git fetch`, i.e. based on the remote branch you're tracking
|
|
first, or origin otherwise.
|
|
|
|
## DEFAULT REFS
|
|
|
|
If no refs are given as arguments, the currently checked out ref is used. In
|
|
addition, if enabled, recently changed refs and commits are also
|
|
included. See [RECENT CHANGES] for details.
|
|
|
|
## RECENT CHANGES
|
|
|
|
If the `--recent` option is specified, or if the gitconfig option
|
|
`lfs.fetchrecentalways` is true, then after the current ref (or those in the
|
|
arguments) is fetched, we also search for 'recent' changes to fetch
|
|
objects for, so that it's more convenient to checkout or diff those commits
|
|
without incurring further downloads.
|
|
|
|
What changes are considered 'recent' is based on a number of gitconfig options:
|
|
|
|
* `lfs.fetchrecentrefsdays`
|
|
If non-zero, includes branches which have commits within N days of the current
|
|
date. Only local refs are included unless lfs.fetchrecentremoterefs is true.
|
|
The default is 7 days.
|
|
|
|
* `lfs.fetchrecentremoterefs`
|
|
If true, includes remote branches as well as local refs in the recent window. This
|
|
is useful to fetch objects for remote branches you might want to check out
|
|
later, but means more refs are downloaded. The default is false.
|
|
|
|
* `lfs.fetchrecentcommitsdays`
|
|
In addition to fetching at branches, also fetches changes made within N
|
|
days of the latest commit on the branch. This is useful if you're often
|
|
reviewing recent changes. The default is 0 (no previous changes).
|
|
|
|
* `lfs.fetchrecentalways`
|
|
Always operate as if --recent was provided on the command line.
|
|
|
|
|
|
## EXAMPLES
|
|
|
|
* Fetch the LFS objects for the current ref from default remote
|
|
|
|
`git lfs fetch`
|
|
|
|
* Fetch the LFS objects for the current ref AND recent changes from default
|
|
remote
|
|
|
|
`git lfs fetch --recent`
|
|
|
|
* Fetch the LFS objects for the current ref from a secondary remote 'upstream'
|
|
|
|
`git lfs fetch upstream`
|
|
|
|
* Fetch the LFS objects for a branch from origin
|
|
|
|
`git lfs fetch origin mybranch`
|
|
|
|
* Fetch the LFS objects for 2 branches and a commit from origin
|
|
|
|
`git lfs fetch origin master mybranch e445b45c1c9c6282614f201b62778e4c0688b5c8`
|
|
|
|
## SEE ALSO
|
|
|
|
git-lfs-checkout(1), git-lfs-pull(1).
|
|
|
|
Part of the git-lfs(1) suite.
|
|
|