无法推送到GitHub(超出GitHub的文件大小限制)

17

我的本地分支无法上传到主分支,因为错误输出显示“downloads/ue4-test-8.zip的文件大小为363.08 MB,超过了GitHub允许的100.00 MB的文件大小限制”,尽管我已经删除了这个文件,但是我的所有提交仍然被拒绝。

  • 我已经删除了这个大文件。
  • 我认为一切都会好起来,所以我添加了新的文件到代码库中。
  • 现在当我想要推送代码时,会出现一个关于不存在该文件的错误。

我该如何解决这个问题并且能够推送这个代码库?

这是我的输出日志:

~\Documents\GitHub\mryamz.github.io [master ↑6 +0 ~1 -0 !]> git push
Counting objects: 42, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (28/28), done.
Writing objects: 100% (42/42), 360.48 MiB | 668.00 KiB/s, done.
Total 42 (delta 18), reused 36 (delta 13)
remote: Resolving deltas: 100% (18/18), completed with 6 local objects.
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: 92c21619bdc53df9a9cf2ed2b801c3d5
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File downloads/ue4-test-8.zip is 363.08 MB; this exceeds GitHub's file size limit of 100.00 MB
To https://github.com/mryamz/mryamz.github.io.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://github.com/mryamz/mryamz.github.io.git'
~\Documents\GitHub\mryamz.github.io [master ↑6 +0 ~1 -0 !]> cd downloads
~\Documents\GitHub\mryamz.github.io\downloads [master ↑6 +0 ~1 -0 !]> dir


    Directory: C:\Users\admin\Documents\GitHub\mryamz.github.io\downloads


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        1/22/2017   4:58 PM          52509 Ampersand Studio v0.0.3.jar
-a----        1/11/2017   5:39 AM           3538 ascii_art .jar
-a----        7/26/2017   6:00 PM         133830 ClientSide.jar
-a----         3/3/2017   6:39 PM       69347251 Defend_The_Train.jar
-a----        1/11/2017   6:11 AM        2896549 Doppler_Effect.jar
-a----         1/9/2017   8:01 PM       10315457 friction_sim.jar
-a----        7/24/2017  11:45 PM         208804 jnativehook-2.1.0.jar
-a----        4/24/2017   9:15 PM         890923 Ludum_Dare_38.jar
-a----        4/23/2017   2:36 PM        1759272 Ludum_Dare_38_SRC.zip
-a----        5/12/2017  12:47 AM           6259 MBS.jar
-a----        2/18/2017   2:43 PM         226755 Pascals's Triangle.jar
-a----        2/18/2017   3:33 PM        1660624 Quadratic Calculator.jar
-a----        7/26/2017   5:27 PM          35977 RawPCM_Player.jar
-a----        1/11/2017   6:18 AM       10871259 Renassance v6.jar
-a----        2/16/2017   7:34 PM         116175 Scorched Earth.jar
-a----         5/8/2016   8:55 PM          18151 ServerSide.jar
-a----        7/26/2017   6:12 PM           9170 Simplix-Earth-Branch.jar
-a----        2/18/2017   2:38 PM          41453 Spirograph.jar
-a----        4/30/2017  12:44 PM         646609 sw.jar
-a----        1/11/2017   6:49 AM        1307614 Word Bank.jar


~\Documents\GitHub\mryamz.github.io\downloads [master ↑6 +0 ~1 -0 !]>

你在这里检查答案了吗 https://dev59.com/xlwX5IYBdhLWcg3w0iUc? - J K
文件确实存在...在你的Git历史中。仅仅因为你当前删除了该文件,并不意味着它在历史中不存在。故事的寓意是:不要将大型二进制文件提交到你的代码库中。 - Tim Biegeleisen
4个回答

8
我认为您已经提交了这个文件。即使您删除了该文件并进行新的提交,该文件仍然存在于之前的提交中。而git push会将所有缺失的提交发送到远程。在推送之前,您需要重写git历史记录。没有git log,我无法帮助您提供确切的命令。使用合并提交(Squashing Commits)可以完成此任务。

那个链接帮助我弄清楚了。谢谢。 - mryamz

7
我通过以下方法解决了这个问题:
  1. git stash
  2. git rebase -i
  3. 然后一个文本编辑器弹出,允许我在需要删除的提交旁边写下“drop”一词。提交已成功删除。
  4. git push

在文本编辑器中,我用单词“drop”替换了单词“pick”。 - Michael Freidgeim
在文本编辑器中输入“drop”后如何“确认”。我不断地按回车键,但它对我不起作用。 - Guillermina
1
@Liz通常你需要按下“esc”键,然后输入:wq以保存并退出编辑器,最后按回车键。 - Cesar Flores

7

尝试:

git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
git push

4
为什么他应该那样做?那会有什么作用?它是如何回答这个问题的? 如何回答 - Rob
git push 不够。我使用 git push -f origin master 强制更新原始版本。 - msalihbindak
这是唯一一个帮助我解决问题的答案。终于,我可以再次将我的文件推送到仓库了。 - fonzane

5

检查是否安装了Git LFS 如果没有安装,请前往https://git-lfs.github.com/下载用于版本控制大型文件的Git扩展程序

下载exe文件后运行以下命令以安装它。

git lfs install

之后使用 git lfs migrate 命令, 在您的情况下,该命令应为:

git lfs migrate import --include="*.zip"

推送到远程使用:

git push

git lfs install --> git: 'lfs' 不是 git 命令。请参阅 'git --help'。 Ubuntu 22.04 - abalter
1
请从此链接 https://git-lfs.github.com/ 下载所需内容,下载完成后运行程序,并执行上述提到的命令。 - Muhammad Zakaria
1
Homebrew用户可以运行 brew install git-lfs 或者MacPorts用户可以运行 port install git-lfs - cbenitez
将Git lfs安装到您的个人配置文件(而非管理员配置文件),然后启动新的CMD提示符,然后该命令即可运行。但是,请确保您备份了大文件,因为它们不会被添加到Git中! - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接