检测到Git大型文件

检测到Git大型文件,git,Git,我使用JMeter执行了一些负载测试,然后尝试将我的项目签入git 通过做 git add . git commit -m "message" git push 我收到一条错误消息 Counting objects: 13, done. Delta compression using up to 8 threads. Compressing objects: 100% (13/13), done. Writing objects: 100% (13/13), 50.13 MiB | 13.42

我使用JMeter执行了一些负载测试,然后尝试将我的项目签入git

通过做

git add .
git commit -m "message"
git push
我收到一条错误消息

Counting objects: 13, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (13/13), done.
Writing objects: 100% (13/13), 50.13 MiB | 13.42 MiB/s, done.
Total 13 (delta 8), reused 0 (delta 0)
remote: error: GH001: Large files detected.
remote: error: File java_pid32554.hprof is 412.89 MB; this exceeds GitHub Enterprise's file size limit of 100.00 MB
To https://github.dev.myc.com/p/p.git
 ! [remote rejected] feature/branch -> feature/branch (pre-receive hook declined)
error: failed to push some refs to 'https://github.dev.myc.com/p/p.git'
为了解决这个错误,我做了以下操作

git rm java_pid32554.hprof
rm java_pid32554.hprof
added */*.hprof to .gitignore
现在我可以看到有问题的文件已从本地文件系统中删除。当然,我也做了搜索

MacBook-Pro:p (feature/branch>)$ sudo find / -name java_pid32554.hprof
Password:
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
MacBook-Pro:p (feature/branch>)$
所以文件确实不见了

现在当我尝试

git推送

它再次给出相同的错误消息。。。。即使文件已被删除

我不会把这个问题标为重复的问题


我的问题给出了来自git的一条直接错误消息,下面的答案更清楚、更直接。另一个线程充斥着不同类型的解决方案

第一种方法假设您不关心“跟踪”大文件;因此,我不想在GitHub上保留它的副本。在这种情况下,您需要“及时返回”到较早的提交;在添加大的、有问题的文件之前提交

为此,您可以执行以下操作:

git tag too_big            # a "savepoint" just in case you care for it later
git log                    # find an earlier COMMIT_ID
git reset --hard COMMIT_ID # replace COMMIT_ID with the one found

# See how things are at this point
git status
如果“git状态”后不干净,您可能会感兴趣:

# Optionally, this will wipe things out
git clean -df
然后从那一点开始继续你的工作

git push master     # assuming your branch is master
如果你需要恢复这个巨大的文件,标签会给你一个参考点。当您尝试推送到GitHub时,它也会导致问题,因此,只推送
master
,而不是通用的(不明确的)
git推送
(可能意味着
--all


或者,如果出于某种原因必须对非常大的文件应用“源代码控制”,则可以探索GitHub的LFS(大文件存储)git扩展

最好有一个git子存储库(官方称为子模块)来处理大型文件


这是因为您的本地git有一个大文件的历史记录。在git中,历史记录包含完整的文件,即使它在最新版本中已被删除,也可以撤消更改。为了解决这个问题,您需要重写历史记录,或者将git回购还原为早期版本


请参阅相关链接:

我遇到了这个问题,不想回到以前的版本。我选择的选项是将存储库复制到别处,再次克隆,然后用原始文件覆盖文件(大文件除外)

可能是辉煌的复制品。其他“解决方案”是如此复杂和混乱。我的问题是最早的版本是最早的版本。我也不想失去其他的改变。泰。