迁移到Git LFS和跟踪文件时的命令顺序

时间:2019-02-03 00:58:33

标签: git git-lfs

我想对现有的Git存储库使用LFS并跟踪*.foo文件,也将文件转换为历史记录。我想我可以做到:

git lfs track "*.foo"
# changed `.gitattributes` and all `.foo` files
commit -a -m "Started tracking foo files."
git lfs migrate import --everything --include="*.foo"

我应该像在上面一样在导入存储库之前跟踪文件,还是应该在之后进行?有关系吗?

1 个答案:

答案 0 :(得分:1)

在这两种方法中,导入存储库似乎都会自动打开LFS跟踪,因此无需单独使用git lfs track

git lfs migrate import --everything --include="*.foo"

实际上,如果您首先打开跟踪,那么将有一个额外的提交,其中文件类型被添加到.gitattributes。事实证明,git lfs migrate import实际上将添加具有正确跟踪信息的.gitattributes作为历史记录中的第一次提交。如果您没有.gitattributes文件,则会在过去的 中添加一个文件。

类似地,如果您没有.gitattributes(例如,您从Subversion存储库转换了Git存储库),那么如果您首先将自己的.gitattributes添加到存储库并提交在执行git lfs track之前,这会导致历史记录中的.gitattributes版本的 not 没有启用LFS跟踪。如果确实决定手动添加.gitattributes,则应在提交文件之前执行git lfs track…,以便在出现该文件的所有提交中都启用跟踪。

所以最好的方法似乎是:

  1. 在执行其他任何操作之前,请执行git lfs migrate…
  2. 使用其他文件类型更新Git添加的.gitattributes文件(如果您还没有.gitattributes文件)。

总而言之,git lfs migrate import …似乎包含git lfs track …的功能;似乎没有必要在调用之前或之后单独调用后者。