【问题标题】:Git-LFS add filetypes (without doubling repo size)Git-LFS 添加文件类型(不加倍 repo 大小)
【发布时间】:2019-10-29 20:39:59
【问题描述】:

我在 GitLab.com (8GB) 上有一个包含一些资产(纹理等)的大型存储库。我决定对有时超过 50MB 的文件使用 git lfs。

我从 git lfs migrate import --include="*.png" 并且做了 git reflog expire --expire-unreachable=now --all git gc --prune=now 并跟踪文件类型(track、commit .gitattributes、push)

问题是我的存储库大小几乎翻了一番,由于 10GB 大小限制,我无法推送新内容,甚至无法推送 .gitattributes

我如何告诉 git git lfs 已经跟踪了 .png 文件并且可以删除 repo 中的原始版本? (我认为 migrate 确实可以做到这一点,但事实并非如此)

更新:我做了一个只有 1 个大文件的测试仓库。结果是一样的。我已经将 repo 大小翻了一番,因为该文件似乎同时在普通 repo 和 lfs 中。在 gitlab.com 中,它带有一个 lfs 标签,很困难。

【问题讨论】:

    标签: git gitlab atlassian-sourcetree git-lfs


    【解决方案1】:

    默认情况下,Git LFS 只会迁移当前引用(通常是当前分支)。如果您想迁移整个存储库,这几乎总是您想要做的,您需要使用--everything 选项到git lfs migrate import,以便它遍历所有分支和标签。

    请注意,如果您的存储库有一个标签指向另一个标签(这种情况不常见但有时会发生),则该标签不会在当前版本中迁移。

    【讨论】:

    • 谢谢,我会试试的。但我已经在使用单个分支 repo(仅限 master)对其进行测试。
    • 好的,所以。您建议的命令创建了一个新的提交历史记录。但是我找不到删除旧 master 分支的方法,所以我仍然被 repo 中实际大小的两倍所困扰。处理这个新的提交历史的下一步是什么?
    • 你怎么还有旧的master 分支?你是怎么发现的?
    • 我正在使用 sourcetree。在分支视图中看到它。为新分支命名。然后我使用了一个特殊的命令来合并没有连接历史的两个分支。现在我有 1 个分支,但它的文件仍然很大。
    • 我不熟悉 SourceTree。 git lfs migrate import --everything 应该重写了整个历史,包括所有分支,而不是创建一个新的。您可以编辑您的问题以显示git for-each-ref 的输出吗?
    猜你喜欢
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 2019-07-21
    • 2012-10-31
    相关资源
    最近更新 更多