GIT-LFS-FETCH(1)
π GIT-LFS-FETCH(1) β the fetch era π
okay so bestie, welcome to git-lfs-fetch β literally the glow-up command for grabbing all your Git LFS files for a given ref β¨ this is part of the git-lfs(1) suite and it's giving "download all the things" energy π
πΈ NAME πΈ
git-lfs-fetch β download all Git LFS files for a given ref, no cap π
π¦ SYNOPSIS π¦
git lfs fetch [options] [<remote> [<ref>...]]
git lfs fetch [options] <remote> --stdin
π DESCRIPTION π
Download Git LFS objects at the given refs from the specified remote. Wondering what happens if you don't specify? See DEFAULT REMOTE and DEFAULT REFS β they've got you covered, bestie π«Ά
β οΈ important vibe check: this does not update the working copy. it fetches, it doesn't touch your files. periodt π
β¨ OPTIONS β¨
-I<paths>,--include=<paths>β specifylfs.fetchincludejust for this invocation; see INCLUDE AND EXCLUDE below π₯-X<paths>,--exclude=<paths>β specifylfs.fetchexcludejust for this invocation; see INCLUDE AND EXCLUDE below π₯-r,--recentβ download objects referenced by recent branches & commits in addition to those that would otherwise be downloaded. See RECENT CHANGES π-a,--allβ download all objects referenced by any commit reachable from the refs you passed as arguments. If no refs are provided, then all refs are fetched. This is primarily for backup and migration purposes. Cannot be combined with--recentor--include/--exclude. Ignores any globally configured include and exclude paths to ensure that all objects are downloaded. it's giving "grab everything, we're moving house" π--stdinβ read a list of newline-delimited refs from standard input instead of the command line π-p,--pruneβ prune old and unreferenced objects after fetching, equivalent to runninggit lfs pruneafterwards. Seegit-lfs-prune(1)for more details π§Ή--refetchβ also fetch objects that are already present locally. yes, even the ones chilling in your repo already, bestie π-d,--dry-runβ print what would be fetched, without actually fetching anything. the "window shopping" of fetches π-j,--jsonβ writes the details of all object transfer requests as JSON to STDOUT, if the command exits successfully. Intended for interoperation with external tools. When--dry-runis also specified, writes the details of the transfers that would occur if the objects were fetched. for the tool girlies π§β¨
π 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. it's called boundaries, bestie π
In your Git configuration or in a .lfsconfig file, you may set either or both of lfs.fetchinclude and lfs.fetchexclude to comma-separated lists of paths. If lfs.fetchinclude is defined, Git LFS objects will only be fetched if their path matches one in that list, and if lfs.fetchexclude is defined, Git LFS objects will only be fetched if their path does not match one in that list. Paths are matched using wildcard matching as per gitignore(5).
πΈ note: using the command-line options-Iand-Xoverride the respective configuration settings. Setting either option to an empty string clears the value. so you can yeet the config for one command, iconic π«Ά
π 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" 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. so if you're not sure, just know it'll pick something sensible, slay π
β 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 unlesslfs.fetchrecentremoterefsis true. The default is 7 days.lfs.fetchrecentremoterefsβ If true, fetches remote refs (for the remote you're fetching) 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. The default is true; if you set this to false, fetching for those branches will only occur when you either check them out (losing the advantage offetch --recent), or create a tracking local branch separately then fetch again. it's giving "convenience vs. control" π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--recentwas 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 all the LFS objects from the default remote that are referenced by any commit in the main and develop branches
git lfs fetch --all origin main develop
- 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 main mybranch
e445b45c1c9c6282614f201b62778e4c0688b5c8
π SEE ALSO π
git-lfs-checkout(1), git-lfs-pull(1), git-lfs-prune(1), gitconfig(5).
Part of the git-lfs(1) suite.
and that's the whole vibe bestie, go forth and fetch iconically π β¨
this little rewrite was brought to you by Git LFS version vibes, dated the same as ever β stay slaying ππ¦π
π¦ where this page comes from
- arch rolling: git-lfs 3.8.1-1 Β· MIT
- nixos 26.05: git-lfs 3.8.1
- nixpkgs unstable: git-lfs 3.8.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms