Git大文件推送失敗問題及解決方案
問題
在日常開發(fā)中,我們經(jīng)常會遇到這樣的問題:
Remote: File [xxx.exe] size 188.156MB, exceeds quota 100MB Remote: Please remove the file[s] from history and try again
這是因為 Gitee/GitHub 等平臺對單個文件大小有限制(一般是 100MB)。一旦提交了超過限制的大文件,push 就會被拒絕。
本文以我遇到的一個 exe 安裝包 被錯誤提交進(jìn) Git 倉庫為例,分享一下完整的解決思路。
一、為什么不能直接刪除文件?
很多同學(xué)第一反應(yīng)是直接刪除項目里的 exe 文件,然后再提交一次。
但是問題在于:
- 大文件已經(jīng)存在于 Git 歷史中
- 即使最新提交刪除了它,push 時遠(yuǎn)程仍然會檢測到它的歷史,依然報錯
所以必須 從歷史中徹底移除 這個文件。
二、用 git filter-repo 刪除大文件
git filter-repo 是官方推薦的替代工具,比 filter-branch 更快更簡單。
1. 安裝
pip install git-filter-repo
2. 在干凈倉庫中操作
?? 注意:git filter-repo 會修改整個提交歷史。為了安全,最好新克隆一份倉庫來操作:
git clone https://gitee.com/xxx/your-repo.git clean-repo cd clean-repo
3. 刪除大文件
例如刪除 YoloAndHalcon/MainPro/發(fā)布/屏蔽蓋SetupV1.0.exe:
git filter-repo --path YoloAndHalcon/MainPro/發(fā)布/屏蔽蓋SetupV1.0.exe --invert-paths
這會把該文件從整個歷史中移除。
4. 強制推送
git push origin --force
完成后,大文件就不再存在于遠(yuǎn)程倉庫了。
三、如何避免 exe 等大文件被跟蹤?
很多時候,exe、zip、mp4、訓(xùn)練模型等大文件 根本不應(yīng)該放在 Git 倉庫里。
1. 使用 .gitignore
在項目根目錄添加 .gitignore:
# 忽略編譯生成的二進(jìn)制文件 *.exe *.dll *.so *.dylib # 忽略壓縮包 *.zip *.rar *.7z *.tar *.gz # 忽略大數(shù)據(jù)文件 *.csv *.json *.xlsx *.db # 忽略圖片和視頻(按需開啟) *.mp4 *.avi *.mov *.jpg *.png # 忽略機器學(xué)習(xí)模型 *.pt *.onnx *.h5 *.ckpt *.pb
提交后,這些文件就不會再被 Git 跟蹤。
2. 如果必須保存大文件
如果確實需要(比如模型文件、視頻數(shù)據(jù)),推薦兩種方式:
- Git LFS(適合版本控制大文件,但 Gitee 免費版只有 1GB 限額)
- Release 附件 / 網(wǎng)盤 / OSS(不占用 Git 倉庫空間,更加靈活)
四、總結(jié)
- 遇到 push 報錯提示大文件超 100MB,要用
git filter-repo從歷史中徹底刪除。 - 操作步驟:新克隆倉庫 → 執(zhí)行刪除命令 → 強制推送。
- 平時要提前配置好
.gitignore,避免 exe、zip、模型文件等被誤提交。 - 一句話經(jīng)驗:源代碼放 Git,大文件放 Release/網(wǎng)盤,二者分開管理,省心省力。
到此這篇關(guān)于Git大文件推送失敗問題及解決方案的文章就介紹到這了,更多相關(guān)Git大文件推送失敗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
永恒之藍(lán)實戰(zhàn)教程之Mac通過Metasploit攻擊Server2008的詳細(xì)過程
這篇文章主要介紹了永恒之藍(lán)實戰(zhàn)教程?Mac通過Metasploit攻擊Server2008,首先準(zhǔn)備一個Server2008,主要功能是使網(wǎng)絡(luò)上的機器能夠共享計算機文件、打印機、串行端口和通訊等資源,需要的朋友可以參考下2022-08-08
Git中smart Checkout與force checkout的區(qū)別及說明
這篇文章主要介紹了Git中smart Checkout與force checkout的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
基于IntelliJ IDEA/Android Studio插件開發(fā)指南(推薦)
Android Studio是基于Intellij IDEA開發(fā)的,所以開發(fā)Android Studio的插件,其實就是開發(fā)IDEA的插件。根據(jù)官方推薦,使用IDEA IDE來開發(fā)IDEA插件,本文給大家介紹插件開發(fā)的基本流程,感興趣的朋友一起看看吧2021-10-10
Git配置之設(shè)置用戶名(user.name)和郵箱(user.email)方式
文章介紹了如何在Git中配置全局用戶名和郵箱,以確保所有倉庫使用統(tǒng)一的配置,配置命令包括設(shè)置全局用戶名和郵箱,并通過查詢配置來驗證設(shè)置是否成功2026-02-02

