git抱怨我删除了一个大文件

Posted

技术标签:

【中文标题】git抱怨我删除了一个大文件【英文标题】:git complaining about a large file I deleted 【发布时间】:2014-05-02 19:31:40 【问题描述】:

我将 metaio 框架添加到我的项目中以使用它。我有点让它工作了,所以我分支了我的 github 代码并签入。在推送过程中它失败了,注意到库是 150 MB!!!

所以,回到绘图板。我删除了 metaio 和所有使用它的代码。然后我创建了一个新分支并检查了它。当我推动时,我得到了......

remote: error: GH001: Large files detected.        
remote: error: Trace: 9480e8f79b3b6b732bab33a002143676        
remote: error: See http://git.io/iEPt8g for more information.        
remote: error: File ThirdParty/metaiosDK.framework/metaioSDK is 140.84 MB; this exceeds GitHub's file size limit of 100 MB        

我看了看,我的机器上没有一个来自 metaio 的文件。但是每次推送都会导致相同的错误发生。该 URL 也没有真正说明它可能在哪里。

我认为服务器端某处卡住了一些东西......有什么想法吗?

【问题讨论】:

试试git clean -xdf。 (这将删除工作目录中但不在您的.gitignore 文件中的所有文件,所以要小心! 问题解决了吗? 只有从我的机器上删除整个项目文件夹并重新下载。 【参考方案1】:

如果您提交了一个大文件,删除工作树中的代码并不足以使其从您的回购历史中消失。

在下一次推送时,所述历史记录仍将包含该大文件,即使您当前的工作树已提交了较小的内容。

您需要使用git filter-branch(如this answer)或with BFG 来清理您的repo 的历史记录。

【讨论】:

我有点明白这一点,除了一件事......如果删除了大文件,它究竟在我的网络上花费这么多时间在做什么?这个文件是复制到数据库还是什么的? @MauryMarkowitz 删除意味着这里刚刚从工作树中删除。这并不意味着它已从最新提交或先前提交中删除。如果那些过去的提交还没有被推送,它们仍然会被推送,其中包含大文件。因此建议使用 BFG。 不,我明白了,但有问题的大文件已从我的硬盘驱动器中物理删除。那么那个文件的副本,也许还有其他名字,还在我系统的某个地方吗? 好的,我找不到我的 .git 文件夹,bfg 在我的机器上崩溃,找不到类,我无法理解 --filter dox 的一个词。我放弃。那么,如何将这台机器烧掉一切,然后从远程使用全新的代码库重新开始呢? @MauryMarkowitz 只需 git clone 你的远程仓库 URL 到另一个文件夹。但是如果那个克隆仍然有很大的大小,那么你可以在本地初始化一个空的 repo,添加正确的文件(即不是大的文件),将远程源添加到远程 repo url(git remote add origin /your/url)和git push -f -u origin master:这将用全新的历史抹去远端的历史。

以上是关于git抱怨我删除了一个大文件的主要内容,如果未能解决你的问题,请参考以下文章

从 Git 历史记录中删除大文件

.git文件过大!删除大文件

Git从库中移除已删除大文件

如何删除在 git 中错误提交的大文件 [重复]

git进阶 | 03 -如何彻底删除git中的大文件

git进阶 | 03 -如何彻底删除git中的大文件