【问题标题】:undo git lfs after limit exceeded超过限制后撤消 git lfs
【发布时间】:2018-03-20 01:42:24
【问题描述】:

我最近安装了Git-LFS 来管理大文件。但是,我很快就达到了 1 Gb 的存储限制,现在当我尝试推送提交时,系统会提示我:

批量响应:此存储库已超过其数据配额。购买更多 数据包以恢复访问。

并且未能推动。所以现在我实际上无法推送到 repo。

购买更多数据包不是一种选择,但在本地存储大文件(即不对其进行版本控制)是一种选择。

所以我想做的是:

  1. 停止监视 LFS 监视的文件(当前设置为 .gitattributes 中的所有 *.csv)。
  2. 从 git 中删除这些文件,即,这样它们就不会影响任何 repo 大小。
  3. 这些文件仍然存在于本地。
  4. 卸载 Git-LFS。
  5. 尽可能少地破坏历史记录,最好只影响已删除的文件。
  6. 现在 repo 的大小应该更小了,恢复正常推/拉的能力。

我发现了一些关于人们超出限制的信息,但没有任何东西可以做到以上几点。

FWIW 我通常使用 Tortoise Git,但当然也有 Git Shell。

【问题讨论】:

  • 文件进入历史记录后,您必须重写历史记录才能删除它们。 GitHub 将 所有 数据(不仅仅是当前数据)计入 1 GB 限制。
  • 有没有办法重写历史,这样它就省略了 csv 文件,但其他方面是一样的?
  • 您可以在本地或 Internet 的某个位置设置自己的 lfs 服务器,然后迁移到那里。 Here 是实现列表
  • github.com/git-lfs/git-lfs/issues/641 也许这对你有帮助。
  • "你可以设置你自己的 lfs 服务器" 我碰巧在将任何东西推送到 GitHub 之前这样做了,但是如果你的提交中有任何 LFS 指针,GitHub 的推送钩子会阻止你的推送(这很荒谬),强制你将 blob 上传到 GitHub,一旦你这样做了,你就会耗尽你的配额,并且根本无法与你在 GitHub 上的存储库进行交互。

标签: git github git-lfs


【解决方案1】:

有没有办法重写历史,这样它会省略 csv 文件,但其他方面是一样的?

这就是git filter-branch 的用途。同样,它将重写历史记录,因此需要git push --force
另请参阅“Git - Remove All of a Certain Type of File from the Index”:BFG repo cleaner 可以更容易/更快地使用。

【讨论】:

  • 这回答了我的评论,但不是原始问题。例如,我现在无法在当前状态下推送,所以我担心尝试这样做可能只会导致更复杂的问题而不是解决方案。我也不清楚这是否会将 csv 文件保留在本地,这将如何影响 LFS,或者它将如何影响我推/拉的能力。
  • 对于测试,您可以应用我的答案,然后推送到另一个全新的空仓库:查看结果是否正常,而不会使您的原始仓库复杂化。
  • 请注意:有一个错字,重写 -> 重写
  • @YueLinHo 谢谢。我已经修正了错字。
  • 你是如何解决这个问题的? Another similar question 已通过联系 GitHub 支持解决。
【解决方案2】:

如果你用尽了 GitHub 的免费配额,但你不关心使用 GitHub 的 LFS 存储,那么你仍然可以通过“卸载” git lfs 之前将指向 LFS blob 的指针推送到 GitHub 提交(不上传 blob 本身)推:

$ git push origin master

batch response: This repository is over its data quota.
Account responsible for LFS bandwidth should purchase more 
data packs to restore access.

$ git lfs uninstall
$ git lfs uninstall --local

$ git push origin master
# Push worked!

但是,如果您在尝试使用指针推送提交时遇到 GH008 错误(预接收挂钩被拒绝),那么上述技巧可能有帮助,也可能没有帮助。有时有效,有时无效,我不完全理解这种模式:

$ git push origin master
...
remote: error: GH008: Your push referenced at least 9 unknown Git LFS objects:
...
! [remote rejected] master -> master (pre-receive hook declined)

【讨论】:

    猜你喜欢
    • 2016-01-24
    • 2016-06-02
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 2014-10-01
    相关资源
    最近更新 更多