由于我已经删除了大文件而无法将其推送到GitHub

目前我有

  1. 空GitHub回购

  2. SSH服务器存储库(主)

  3. 本地回购

SSH服务器存储库是最新的存储库(生产站点),因此我从那里到本地进行了Git克隆。然后,我尝试git push对GitHub 做一个。

一切正常,但随后又说到filename.gz对于GitHub太大了。我不需要此文件,所以我运行了几个Git命令从Git缓存中删除它,然后将其推回SSH服务器。

我没有在本地看到大文件,但是即使git diff什么都没有返回并且git push返回“一切都是最新的”,它仍然在SSH服务器上-而且即使在我尝试推送到本地文件时该文件不可见GitHub我仍然有关于它的错误

远程:错误:文件fpss.tar.gz为135.17 MB; 这超出了GitHub的文件大小限制100 MB

我按照GitHub帮助中列出的 “解决问题”下的步骤进行操作,所以这还不够吗?

当文件不在本地或不在git status / diff / push中列出时,文件仍如何在ether中?


一只斗牛犬
浏览 604回答 3
3回答

天涯尽头无女友

我发现壁球比壁球更有用filter-branch。我做了以下工作:在本地删除大文件。提交本地删除。提交软重置X号(对我来说是3) git reset --soft HEAD~3。然后重新提交所有更改(又称壁球) git commit -m "New message for the combined commit"推送压缩的提交。特殊情况(来自用户@lituo):如果上述方法不起作用,则可能是这种情况。提交1包含大文件,提交1的推送由于大文件错误而失败。提交2删除了大文件,git rm --cached [file_name]但提交2的推送仍然失败。您可以按照相同的步骤,只是使用替代以上HEAD~3,使用HEAD~2。

慕少森

如果文件是使用最新提交添加的,而您尚未推送到GitHub,则可以删除文件并修改提交,取自此处:git rm --cached giant_file    # Stage our giant file for removal, but leave it on diskgit 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 wellgit push    # Push our rewritten, smaller commit

忽然笑

您可以使用git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch <file/dir>' HEAD这将删除该文件历史记录中的所有内容。问题在于该文件存在于历史记录中。该命令更改提交的哈希值,这可能是一个真正的问题,尤其是在共享存储库上。在不了解后果的情况下不应执行此操作。
打开App,查看更多内容
随时随地看视频慕课网APP