修复git-lfs用户错误

时间:2018-01-29 22:50:05

标签: git-lfs

我们在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文件?根据{{​​3}},使用git-lfs 2.3.0发布的git lfs merge import,但我无法理解如何使用它。

2 个答案:

答案 0 :(得分:2)

我在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文件的内容从纯Git复制到Git LFS。此方法的缺点是您的内容的当前版本保留在纯Git的历史记录中(这可能会增加您的repo的大小)。每个未来的内容更新都只能在Git LFS中进行。“

该作者建议我避免“git lfs migrate import”,除非是紧急情况。如果涉及多个用户,历史的改变可能会造成严重破坏。“

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

答案 1 :(得分:0)

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

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