Provided by: git-lfs_2.3.4-1_amd64 bug

NAME

       git-lfs-migrate - Migrate history to or from git-lfs

SYNOPSIS

       git lfs migrate mode [options] [--] [branch ...]

MODES

info Show information about repository size.

       •   import Convert large Git objects to LFS pointers.

OPTIONS

       -I paths --include=paths
              See INCLUDE AND EXCLUDE.

       -X paths --exclude=paths
              See INCLUDE AND EXCLUDE.

       --include-ref=refname
              See [INCLUDE AND EXCLUDE (REFS)].

       --exclude-ref=refname
              See [INCLUDE AND EXCLUDE (REFS)].

       --everything
              See [INCLUDE AND EXCLUDE (REFS)].

       [branch ...]
              Migrate  only  the  set  of  branches listed. If not given, git-lfs-migrate(1) will
              migrate the currently checked out branch.

              If any of --include-ref or --exclude-ref are given, the checked out branch will not
              be appended, but branches given explicitly will be appended.

   INFO
       The ´info´ mode has these additional options:

       •   --above=<size>  Only  count  files  whose individual filesize is above the given size.
           ´size´ may be specified as a number of bytes, or a number followed by a storage  unit,
           e.g., "1b", "20 MB", "3 TiB", etc.

           If a set of files sharing a common extension has no files in that set whose individual
           size is above the given --above no files no entry for that set will be shown.

       •   --top=<n> Only include the top ´n´ entries, ordered by how many total files match  the
           given pathspec.

       •   --unit=<unit>  Format  the  number of bytes in each entry as a quantity of the storage
           unit provided. Valid units include:

           * b, kib, mib, gib, tib, pib - for IEC storage units
           * b, kb, mb, gb, tb, pb - for SI storage units

       If a --unit is not specified, the largest unit that can fit the number of counted bytes as
       a whole number quantity is chosen.

   IMPORT
       The  ´import´  mode  migrates  large  objects  present in the Git history to pointer files
       tracked and stored with Git LFS. It supports all the  core  ´migrate´  options  and  these
       additional ones:

       •   --verbose Print the commit oid and filename of migrated files to STDOUT.

       If  --include  or  --exclude  (-I, -X, respectively) are given, the .gitattributes will be
       modified to include any new filepath patterns as given by those flags.

       If neither of those flags are given, the gitattributes will be incrementally  modified  to
       include new filepath extensions as they are rewritten in history.

INCLUDE AND EXCLUDE

       You  can configure Git LFS to only migrate tree entries whose pathspec matches the include
       glob and does not match the exclude glob, to  reduce  total  migration  time  or  to  only
       migrate part of your repo. Specify multiple patterns using the comma as the delimiter.

       Pattern  matching is done as given to be functionally equivalent to pattern matching as in
       .gitattributes.

INCLUDE AND EXCLUDE (REFS)

       You can configure Git LFS to only migrate  commits  reachable  by  references  include  by
       --include-ref and not reachable by --exclude-ref.

               D---E---F
              /         \

       A---B------C refs/heads/my-feature \ \ \ refs/heads/master \ refs/remotes/origin/master

       In the above configuration, the following commits are reachable by each ref:

       refs/heads/master: C, B, A refs/heads/my-feature: F, E, D, B, A refs/remote/origin/master:
       A

       The following configuration:

       --include-ref=refs/heads/my-feature                        --include-ref=refs/heads/master
       --exclude-ref=refs/remotes/origin/master

       Would, therefore, include commits: F, E, D, C, B, but exclude commit A.

       The presence of flag --everything indicates that all local references should be migrated.

EXAMPLES

   Migrate unpushed commits
       The  migrate  command´s most common use case is to convert large git objects to LFS before
       pushing your commits. By default, it only scans commits that don´t exist on any remote.

       First, run git lfs migrate info to list the file types taking up the most  space  in  your
       repository.

           $ git lfs migrate info
           migrate: Fetching remote refs: ..., done
           migrate: Sorting commits: ..., done
           migrate: Examining commits: 100% (1/1), done
           *.mp3   284 MB    1/1 files(s)  100%
           *.pdf   42 MB     8/8 files(s)  100%
           *.psd   9.8 MB  15/15 files(s)  100%
           *.ipynb 6.9 MB    6/6 files(s)  100%
           *.csv   5.8 MB    2/2 files(s)  100%

       Now, you can run git lfs migrate import to convert some file types to LFS:

           $ git lfs migrate import --include="*.mp3,*.psd"
           migrate: Fetching remote refs: ..., done
           migrate: Sorting commits: ..., done
           migrate: Rewriting commits: 100% (1/1), done
             master    d2b959babd099fe70da1c1512e2475e8a24de163 -> 136e706bf1ae79643915c134e17a6c933fd53c61
           migrate: Updating refs: ..., done

   Migrate local history
       You can also migrate the entire history of your repository:

           # Check for large files in your local master branch
           $ git lfs migrate info --include-ref=master

           # Check for large files in every branch
           $ git lfs migrate info --everything

       The same flags will work in import mode:

           # Convert all zip files in your master branch
           $ git lfs migrate import --include-ref=master --include="*.zip"

           # Convert all zip files in every local branch
           $ git lfs migrate import --everything --include="*.zip"

       Note: This will require a force push to any existing Git remotes.

SEE ALSO

       Part of the git-lfs(1) suite.

                                          November 2017                        GIT-LFS-MIGRATE(1)