我在提交提交时收到以下错误
remote: warning: File var/log/system.log is 57.82 MB; this is larger than recommended maximum file size of 50 MB
remote: error: GH001: Large files detected.
remote: error: Trace: 96d01231dffac3fbc3ba1eb2e9f01a93
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File var/report/752246136671 is 100.86 MB; this exceeds github's file size limit of 100 MB
我尝试了下面逐步列出的命令:
git push -u origin master
当我输入git status时,无法在git文件中找到这些提交。
请您告诉我如何在没有这些错误的情况下将我的更改推送到repo?我猜这些文件都在github索引中。我还尝试了git rm --cached var / log / system.log。但没有结果。
撞到我的头!
更新1 请根据以下专家的两个答案找到Gists:
更新2 请在下面找到我试图删除的文件的git Log详细信息:
回答的问题
请找到解决我问题的最终答案的要点
感谢git expert VonC,Holger Just以及所有其他专家提供他们的输入和堆栈溢出。
答案 0 :(得分:6)
git rm
或git rm --cached
不足以删除存储在您的仓库中的历史记录。
你需要:
使用BFG Repo Cleaner,如上所述。
bfg --strip-blobs-bigger-than 1M my-repo.git
使用git gc --agrressive --prune=now
(在BFG之后),详见“Reduce git repository size”
git push -f
强制您的远程仓库上的新历史记录。答案 1 :(得分:1)
该消息包含有关两个文件的信息。 var/log/system.log
生成警告,但会被推送。 var/report/752246136671
太大,因此无法推动。因此,您必须至少删除后一个文件。
在Github允许您推送之前,您必须从所有提交中删除该文件。在之前添加文件后,仅在以后的提交中删除该文件是不够的。
根据消息中链接的the article,您可以执行以下两个建议操作之一:
如果您在最近的提交中添加了该文件,则可以将其更改为删除文件:
git rm --cached var/report/752246136671
# Stage our giant file for removal, but leave it on disk
git commit --amend -CHEAD
# Amend the previous commit with your change
# Simply making a new commit won't work, as you need
# to remove the file from the unpushed history as well
git push
# Push our rewritten, smaller commit
或者您可以使用The BFG过滤存储库并从所有提交中删除该文件。如果您已将文件添加到git历史记录中(而不是仅在最近的提交中),则必须执行此操作,您必须清除历史记录。即使以后再删除它,Github也不允许在任何提交中推送大文件。这是因为在这种情况下,文件仍然是历史记录的一部分,因此会使回购文件膨胀。
您可以从https://github.com/rtyley/bfg-repo-cleaner/releases/latest安装BFG。
您可以通过运行此命令删除任何大于100MB的文件的任何指示:
cd /path/to/your/git/repo
java -jar bfg.jar --strip-blobs-bigger-than 100M
# Git history will be cleaned - files in your latest commit will *not* be touched
请注意,这将更改存储库的历史记录,从而导致潜在的强制推送。因此,您可能需要与其他开发人员协调。
此外,如果您仍然需要该文件,则应该先进行备份,因为您将无法从git恢复该文件。
答案 2 :(得分:1)
当前的问题是,虽然您使用新提交删除了相关文件,但是有一些blob对应于您的repo中相同文件的旧提交,并且这些对象中的2个的大小会向您发出警告,一个错误。为了能够再次推送,您还需要删除它。
尽管bfg-repo
应该适用于大多数人来纠正这种情况,但它需要在系统上安装和配置java,并且并不总是可用。
您有2个文件var/log/system.log
和var/report/752246136671
超出限制,因此我建议您使用filter-branch
删除它们以获取仅限git的解决方案:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch var/log/system.log var/report/752246136671' --tag-name-filter cat -- --all
您可能需要稍后强制推送更改(使用git push -f origin
)。
一般情况下,最好使用*.log
中的*.info
条目完全忽略git仓库中的*.log
,.gitignore
和其他日志文件文件。您也可以忽略var/reports
文件夹。
如果有文件已经提交到repo并提前推送,您可能需要使用git rm --cached "*.log"
删除它们并提交这些更改以永久地取消它们。
PS:对我来说这似乎是magento
/ joomla
安装,在这种情况下,完全忽略var
.gitignore
文件夹,你不想要对象来自var/cache
或var/session
等,可在回购中跟踪。
答案 3 :(得分:0)
很明显,你正试图推送一个非常大的文件,正如错误所示。它也是一个日志文件,因此我假设不应该在存储库中。
如果是这样,请执行此操作以修复错误:
$ git rm var/log/system.log
$ git commit -m "Delete system.log file"
$ git push -u origin master