【问题标题】:Git push failed, looking for partial file history deletiongit push 失败,寻找部分文件历史删除
【发布时间】:2012-10-05 04:05:00
【问题描述】:

我一直在使用 heroku 和 git 通过基本工作流程更新 facebook 应用程序。我是唯一一个工作的人,唯一发生的事情是每周一次新的二进制文件。 git commit -am "新更新" git push heroku

二进制文件已增长到大约 30 MB。最近所有的推送命令都像这样失败: 计数对象:7,完成。 压缩对象:100% (4/4),完成。 致命:sha1 文件''写入错误:无效参数 错误:未能将一些参考推送到“mysecretgitplace”

我查看了很多地方,发现这是一个非常常见的问题,似乎没有什么特别的原因,也可能是任何原因。 现在,随着时间的推移唯一改变的是二进制文件的大小和提交次数的增加,可能就是这样。

所以现在我想尝试通过删除/销毁/删除这个二进制文件的历史记录来减少我正在使用的服务器空间(完全除了当前版本(在服务器上的头/主服务器上)。除了每周提交二进制文件之外,我还会每隔一段时间执行一次。

有没有让我这样做的命令? (提交新的二进制文件后,无需重新添加文件的整个“已删除”历史记录)

(很明显,我只想开发我的游戏,而不是为所有服务器和版本控制而烦恼。)

【问题讨论】:

    标签: git heroku binary push history


    【解决方案1】:

    Git 允许您通过 filtering 它删除部分历史记录。

    在您的情况下,第一个示例应该可以解决问题:git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD

    不过,您应该仔细阅读此命令以及需要在您的存储库和远程执行哪些操作才能使其生效(特别是,您必须在本地存储库中使用 git gc)。

    您可以在github help section 中阅读更多信息。

    顺便说一句,git 并不擅长管理大文件(请查看git annex 寻找潜在的解决方案)。

    【讨论】:

    • 是的,我偶然发现了 filter 命令,但它让我有点害怕,我有点希望有一个更简单的解决方案。 (我定期运行 gc,但本地存储库至少为 500MB,虽然过去 > 1 GB)如果我必须重命名二进制文件,完全删除旧的并修复 html/php 指向在新的名字,但来吧..你知道的。我去看看附件命令谢谢!
    • 重命名无济于事。如果你想取回内存空间,你必须从你的历史记录中清除这个文件。无论如何,您的文件的每个版本都存储在您的 .git/ 文件夹中。这就是它这么大的原因。
    • 所以这不是一个很好的解决方案。我遇到的一些事情:“致命:不明确的参数'rm':未知的修订或路径不在工作树中”直到我意识到我正在使用美国 101 键盘的欧洲机器和语言设定。所以这个: git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD 应该是这样的: git filter-branch --index-filter "git rm --cached --ignore-unmatch文件名“头
    • 您的问题是从您的历史记录中删除一个大文件,我回答了。 git rm --cached 仅删除了您历史记录中的文件。您仍然将它作为未跟踪文件保存在您的存储库中。所以你可以再次添加它。在您的情况下,我会做的是 1)清理存储库并将这个大文件添加到您的 gitignore 和 2)使用另一种方式推送文件,或将其存储在其他地方(aws 是一个很好的候选者)。从长远来看,将大文件保存在 git 文件夹中是无法管理的。
    • 首先,您可能已经使用了git push --force。如果没有,您的文件不可能刚刚从您的服务器上消失。您应该能够像往常一样执行git add your_filegit commit 以获得文件的当前版本。如果你没有运行git gc --prune 或类似的东西,你的文件,以及引用它的每个提交,应该仍然在你的 .git/ 文件夹中的某个地方。无论如何,请阅读help.github.com/articles/remove-sensitive-data。一切都解释得很好。
    猜你喜欢
    • 2013-09-15
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 2014-06-19
    • 2020-03-20
    • 1970-01-01
    相关资源
    最近更新 更多