38

目前,当我尝试推送到 Git 存储库时,我收到以下错误。

remote: error: GH001: Large files detected.
remote: error: Trace: 7bbfe5c1099cfe679aa3cd1eee13e10a
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File e3384023be667de7529538b11c12ec68.201307290946.sql.gz is 125.37 MB; this exceeds GitHub's file size limit of 100 MB

我已经检查并确保该文件在目录中不存在,并且已经完成了git add -u. 我们试图修剪分支,但这不起作用,因为它找不到要删除的文件。

4

6 回答 6

41

您可能正在推送多个提交,其中一个包含一个大文件,另一个更新的提交删除了该文件。

2020-2022:

使用git filter-repo(基于python,需先安装

并使用一些基于内容的过滤

如果你想过滤掉所有大于一定大小的文件,你可以使用--strip-blobs-bigger-than一些大小(K,MG后缀被识别),例如:

git filter-repo --strip-blobs-bigger-than 10M

原始答案,使用过时的工具,如git filter-branchorBFG

在任何情况下,您都可以尝试,如“修复“这超出 GitHub 的文件大小限制为 100 MB”错误”中所述,过滤器分支(如果您知道看不到的大文件的名称/路径)

git filter-branch --index-filter 'git rm --cached --ignore-unmatch e3384023be667de7529538b11c12ec68.201307290946.sql.gz' <sha1>..HEAD

或者,如果您不知道但想删除任何大文件(例如 > 90MB),您可以使用BFG 存储库清理器

bfg --strip-blobs-bigger-than 90M  my-repo.git

这将为您跟踪回购历史中难以捉摸的大文件并将其删除。
请注意,您必须在此git push --force之后执行 a,因为最近提交的历史记录将被修改。
如果其他人之前已经克隆了您的存储库,则需要进行一些沟通以警告他们。

于 2013-11-09T10:19:14.637 回答
28

就我而言,我用这个链接修复了它:

GitHub 帮助 | 处理大文件

注意它说Giant_file 的位置

$ git filter-branch --force --index-filter \
  'git rm --cached --ignore-unmatch giant_file' \
  --prune-empty --tag-name-filter cat -- --all

$ git commit --amend -CHEAD

$ git push
于 2013-11-13T04:48:35.680 回答
6

如果您有几个大文件,您需要运行另一个命令:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch largfile1'
git filter-branch --index-filter 'git rm --cached --ignore-unmatch largefile2'
Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f

你需要跑

git update-ref -d refs/original/refs/heads/master

然后你可以运行 git filter-branch 命令

希望这可以帮助你

于 2016-10-07T21:50:15.333 回答
4

使用删除文件filter-branch

git filter-branch --tree-filter 'rm -rf your/file/path/task.txt' HEAD

确保您必须添加rm -rf

之后推送代码

git push origin master -f
于 2020-04-27T11:23:37.280 回答
3

以下是您可以推送大于 100MB 的对象的步骤:

  1. 安装git-lfs说明可以在https://git-lfs.github.com/找到

  2. 假设您有*.jar大于 100 MB 的文件,然后运行git lfs track "*.jar​​. 你应该看到类似的东西

    跟踪“*.jar”

  3. git add .

  4. git push -u origin master

您应该会看到如下内容:

Uploading LFS objects:  89% (398/447), 864 MB | 1.8 MB/s
于 2020-07-04T01:26:47.330 回答
1

首先需要解决未暂存的提交。采用git status

提交这些文件

git status -s | grep D

提交这些文件

git status -s | grep M

然后运行这个

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch path-to-large-file' --prune-empty --tag-name-filter cat -- --all

一旦执行上述命令,将迭代提交历史以找到大文件并将其删除。

于 2018-11-25T13:25:54.323 回答