5346b02747
A common invocation of the 'git lfs migrate import' command is with '--include' and/or '--exclude' flag(s), which specify wildmatch pattern(s) for which paths to migrate and/or not migrate. This is useful for retroactively importing a set of files into Git LFS's care, or fixing up a file that should have been tracked by Git LFS but was accidentally committed as a large object instead. In the later case, it is often the reality that a user will run 'git lfs migrate --import' with an '--include' path that they believe will gather the file (and the file alone). This approach is brittle because it requires the user to infer not only the applicable pattern but the meaning of that pattern. It also requires the user to run more than one migration when fixing multiple types of files. The .gitattributes file(s) contained within a repository provide an authoritative source on what file(s) are considered by Git to be tracked in Git LFS. We can use this information to infer the correct patterns to ``fix up'' a broken repository. In the simplest case, if a repository's .gitattributes file contains the following: *.txt filter=lfs merge=lfs diff=lfs -text But a .txt file matched by that pattern is not parse-able as an LFS pointer, it will appear as unable to checkout. Running 'git lfs migrate import --fixup --everything' will correctly traverse history and find the affected .txt file, read it, create an object file for it, and store it as an LFS pointer in history. Thus, a user can run one command which will recognize arbitrarily complex problems where a file should be tracked by Git LFS, but isn't. Later, this feature could be combined with the new 'git lfs migrate export' functionality to also clean files _out_ of Git LFS to object files when they are not supposed to be tracked as Git LFS objects. |
||
---|---|---|
.. | ||
api | ||
man | ||
proposals | ||
custom-transfers.md | ||
extensions.md | ||
linux-build.md | ||
README.md | ||
spec.md |
Git LFS Documentation
Reference Manual
Each Git LFS subcommand is documented in the official man pages. Any of these can also be viewed from the command line:
$ git lfs help <command>
$ git lfs <command> -h
Videos
- How to Work with Big Files - Quick intro to Git LFS.
Developer Docs
Details of how the Git LFS client works are in the official specification.
Details of how the GIT LFS server works are in the API specification.