git - 如何迁移到 git lfs
问题描述
我有一个 git repo,其中许多文件应该是 lfs,因为它们大于 100M。
环顾四周,我找不到分步指南来解释如何迁移具有许多分支的真实现有存储库以及 lfs 文件在子目录中的位置。
在我的情况下,大文件分布在 repo 周围,如下所示:
code/track1/file000.pkl
code/track3/dat000.bin
code/track4/pip000.pkl
code/subcode/track5/pip000.pkl
code/subcode/track5/pop000.model
我想只需使用以下命令将 git 项目转换为 git lfs git lfs migrate
:
git lfs install
git lfs migrate import --include="*.pkl"
git lfs migrate import --include="*.bin"
git lfs migrate import --include="*.model"
git commit -m "migrating models"
但这并没有做任何事情。
nothing to commit, working tree clean
我想转换所有的 repo,我的意思是所有的文件、历史记录以及所有现有的分支。
换句话说,git lfs migrate
现在看起来很稳定,但用户不那么友好。
跑步git lfs track "*.pkl"
似乎有效果:
modified: code/track1/file000.pkl
modified: code/track4/pip000.pkl
modified: code/subcode/track5/pip000.pkl
但接下来该怎么做。我看到git lfs track
它将开始跟踪新文件或已签入您的存储库的现有文件。
但是历史呢?我正在苦苦挣扎,因为我不希望最终得到一个必须从头开始重新导入或必须处理过滤器分支的混乱存储库。
解决方案
Git LFS 提供了如何使用的教程git lfs migrate
有几点要提:
- 当您使用 lfs migrate 时,它会遍历并更改历史记录,因此当您调用 时
git lfs migrate import --include="*.pkl"
,它会将其添加到要在 LFS 下跟踪的 .gitattributes 中,并在整个历史记录中将 .pkl 文件迁移到 LFS。因此,您无需git commit
事后致电。请注意,如果您调用 git lfs import migrate --no-rewrite,这将有所不同,正如文档所示,这会导致将文件迁移到 LFS 的单独提交。(但是,鉴于您在问题中指出的内容,我认为这不是您想要的。) - 您表明您正在使用多个分支进行回购。因此,您可能想要使用
--everything
,文档指出其中包括迁移中的所有本地和远程分支。 - 如果您不确定 LFS 迁移是否成功,您可以检查 lfs 目录以查看对象是否已移动到 LFS 存储,或者运行
git lfs ls-files
以查看当前跟踪和存储在 LFS 下的文件。此外,您可能希望使用 运行 LFS 迁移--verbose
,这将在迁移过程中打印出已移动到 LFS 存储的特定文件。
推荐阅读
- reactjs - 在 React 中提交表单后无法重置输入字段
- php - 该页面未在 codeigniter 中正确重定向
- css - 为什么这个 nth-of-type 选择器不起作用
- swift - swift : UIView 的平滑翻译与 iOS 控制面板完全一样(跟随用户手指,使用平移)
- php - 如何使用 PHP 将“字符串”操作为给定格式
- r - R中每组的第k个最小元素
- python - 如何在运行时更新 Gtk 中嵌入的 matplotlib?
- machine-learning - 如何在混淆矩阵中显示精度
- asp.net-mvc - 如何使用 Owin 在 MVC 应用程序上获取 Azure B2C 访问令牌
- python - 如何在观察具有相同属性的其他行的同时调整比率