为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Git
一只斗牛犬 2019-11-05 10:41:04
目前我有空GitHub回购SSH服务器存储库(主)本地回购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中?
查看完整描述

3 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

我发现壁球比壁球更有用filter-branch。我做了以下工作:

  1. 在本地删除大文件。

  2. 提交本地删除。

  3. 提交软重置X号(对我来说是3) git reset --soft HEAD~3

  4. 然后重新提交所有更改(又称壁球) git commit -m "New message for the combined commit"

  5. 推送压缩的提交。

特殊情况(来自用户@lituo):如果上述方法不起作用,则可能是这种情况。提交1包含大文件,提交1的推送由于大文件错误而失败。提交2删除了大文件,git rm --cached [file_name]但提交2的推送仍然失败。您可以按照相同的步骤,只是使用替代以上HEAD~3,使用HEAD~2


查看完整回答
反对 回复 2019-11-05
?
慕少森

TA贡献2019条经验 获得超9个赞

如果文件是使用最新提交添加的,而您尚未推送到GitHub,则可以删除文件并修改提交,取自此处:


git rm --cached giant_file

    # 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


查看完整回答
反对 回复 2019-11-05
?
忽然笑

TA贡献1806条经验 获得超5个赞

您可以使用


git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch <file/dir>' HEAD

这将删除该文件历史记录中的所有内容。问题在于该文件存在于历史记录中。


该命令更改提交的哈希值,这可能是一个真正的问题,尤其是在共享存储库上。在不了解后果的情况下不应执行此操作。


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 575 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信