laravel.log预先接收挂钩被拒绝

时间:2018-08-13 11:43:55

标签: git laravel github

在我被猛烈抨击之前,有几个问题与此有关,但是没有任何解决方案。 远程存储库在storage / logs / laravel.log中没有文件 我用以下方法擦除了本地计算机:

>storage/logs/laravel.log

位于.gitignore中,带有:

/storage/logs/

我也跑过:

git rm --cached storage/logs/laravel.log
git add -A
git commit -m "update"
git push
git reset --soft HEAD^
git reset HEAD storage/logs/laravel.log
git commit -c ORIG_HEAD
git add -A
git commit -m update
git push

并仍然得到:

remote: error: File storage/logs/laravel.log is 127.11 MB; this exceeds GitHub's file size limit of 100.00 MB

 ! [remote rejected] master -> master (pre-receive hook declined)

这是怎么回事? 有人可以就git为什么在甚至不属于仓库的文件上出错的原因给出明确的答案和解决方案。

编辑: 这个问题已经被关闭,并提到了一个答案,该答案可以宣传第三方软件(该问题仅与git有关,与java解决方案无关)。我还表明,我使用该链接中的示例没有成功。 进一步,我最终发布了一个对我有用的解决方案,但主持人认为可以轻松地删除我的解决方案而无需说明理由。我认为主持人必须给出具体的行动原因。如前所述,“ git only”解决方案直到我偶然发现的解决方案才得以解决-现在已将其删除。 Stackoverflow何时开始无解释地删除解决方案?

SHAME

1 个答案:

答案 0 :(得分:0)

您已经向Git仓库提交了一个大文件,它成为该仓库历史记录的一部分。即使您删除了它然后提交,它仍然存在于历史记录中,当您进行推送时,该钩子仍会拒绝您。

Stack Overflow已经很好地解决了这个问题,但是基本的解决方法是从分支的历史记录中删除这个大文件。假设由于文件太大,您永远都无法推送该分支,因此有多种方法可以解决此问题。有两种很好的方法是使用筛选器分支,以及进行交互式变基。这两种方法都返回并重写分支的历史记录,从而删除了大文件的所有痕迹。