修复 git-lfs 用户错误

Fix git-lfs user error

我们在 gitlab 中有一个启用了 git-lfs 的存储库,它工作正常。它很好地分离了 pdf、电影和其他我们不想进行版本管理的东西。

有人在未启用 git-lfs 支持的系统上克隆存储库时出现用户错误。那个人将 pdf 文件添加到 git 并推回服务器。

然后另一个用户在有 git-lfs 的系统上获取该分支,并尝试检查它:

   $ git checkout pj-guide_47_mac_R_setup
   Switched to branch 'pj-guide_47_mac_R_setup'
   Your branch is behind 'origin/pj-guide_47_mac_R_setup' by 14 commits, and can be fast-forwarded.
    (use "git pull" to update your local branch)
    Encountered 1 file(s) that should have been pointers, but weren't:
        47.mac_R_setup/47.mac_R_setup-slides.pdf 

系统上正确配置 git-lfs 以修复该 pdf 文件的最直接路径是什么?根据 https://github.com/git-lfs/git-lfs/issues/1726 git lfs merge import 的用法与 git-lfs 2.3.0 一起发布,但我无法理解如何使用它。

我在 git-lfs 问题跟踪器中就一个略有不同的用例提出了类似的问题。 git-lfs issue 2845

@larsxschneider 给出了这个答案:

“最简单的方法是这样的:

git rm --cached <PROBLEM FILE>
git add --force <PROBLEM FILE>
git commit -m "Move files properly to GitLFS"

这会将您的 PDF 文件的内容从纯 [​​=27=] 复制到 Git LFS。此方法的缺点是您的内容的当前版本停留在纯 Git 的历史记录中(这可能会增加您的存储库的大小)。不过,未来每次内容更新都将仅在 Git LFS 中进行。"

那位作者建议我避免 "git lfs migrate import" 除非在紧急情况下。如果涉及多个用户,历史记录的更改可能会造成严重破坏。"

Lars Schnieder 还提到了一个新的 Youtube 演示文稿。 "GitLFS- How to handle large files in Git - Lars Schneider - FOSSASIA Summit 2017"

对我来说,最简单的解决方案是:

git lfs migrate import --no-rewrite path/to/file.ext

来源:https://tech-notes.maxmasnick.com/fixing-files-that-should-have-been-pointers-in-lfs-but-werent