尝试修复已初始化的存储库时遇到很大麻烦,该存储库的.gitattributes中没有lfs文件类型,例如wav,exr或psd。
我的方法是首先将它们添加到.gitattributes文件中,就像正确注册的文件一样。
*。psd过滤器= lfs diff = lfs merge = lfs -text
然后从缓存中删除它们,暂存并提交。
$> git rm --cached -r .
$> git add --all
$> git commit -m "Added a lot of file types as large files"
在分阶段运行后git status
可以完美地向我展示所有内容,并且仅显示gitattributes的新文件。看起来很完美。
但是现在我需要重写我相信的所有分支的历史记录。最常见的方法似乎是使用git lfs migrate
。所以:
$> git lfs migrate info --everything
migrate: Sorting commits: ..., done
migrate: Examining commits: 100% (299/299), done
*.tga 206 MB 48/48 files(s) 100%
*.exr 108 MB 248/248 files(s) 100%
...Some more
$> git lfs migrate import --everything
在这里,一切都崩溃了。我所有的大文件都很好,我可以打开和编辑它们,但是所有其他文件(未在.gitattributes中注册)现在都是指针!
甚至我的.cs文件和.gitignore都是指针,git lfs ls-files
现在向我显示了我的仓库中的每个文件……我的意思是,如果我双击.gitignore,现在会看到类似的内容>
版本lol://lol.lol.com/lol/v1
oid sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393
尺寸12345
为什么git lfs migrate import
不关心我的.gitattributes?为何指针仍会放在存储库的本地副本上?
我读到了--include="*.exr"
的内容,但是我在网上找到的大多数用法示例都很好,不包含任何内容。如果大多数使用lfs的人没有脚本而只有大文件,我会感到惊讶。但是,请问这是否是唯一的方法。