Git推送因文件太大而失败,如何推送?
我有一个大文件提交和推送,但后来失败了。之后,我删除了这个大文件,并在git中忽略了它,但从那以后,再也没有推送工作了 如何修复它Git推送因文件太大而失败,如何推送?,git,macos,github,netbeans,version-control,Git,Macos,Github,Netbeans,Version Control,我有一个大文件提交和推送,但后来失败了。之后,我删除了这个大文件,并在git中忽略了它,但从那以后,再也没有推送工作了 如何修复它 ==[IDE]== Jan 17, 2017 1:25:30 AM Pushing - sip-phone git branch git remote -v setting up remote: origin git submodule status git push git@github.com:xxxxx/sip-phone.git refs/heads/mas
==[IDE]== Jan 17, 2017 1:25:30 AM Pushing - sip-phone
git branch
git remote -v
setting up remote: origin
git submodule status
git push git@github.com:xxxxx/sip-phone.git refs/heads/master:refs/heads/master
Resolving deltas: 100% (22/22), completed with 3 local objects.
error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
error: Trace: xxfxxxxxx73bfbfecaba
error: See http://git.io/iEPt8g for more information.
error: File tls/tb/plugin/Safari.pkg is 126.54 MB; this exceeds GitHub's file size limit of 100.00 MB
Remote Repository Updates
Branch Update : master
Old Id : b739976f2dfc95d6c79810a66e3ec87e5ad5e12b
New Id : e06457ec3487834e8129ac511d7f7036f2f34b5b
Result : REJECTED_OTHER_REASON
Local Repository Updates
==[IDE]== Jan 17, 2017 1:26:51 AM Pushing - sip-phone finished.
您删除了它,但只是在新的提交中,它仍然存在于旧的提交中,GitHub将不允许您推送它。您需要从历史记录中完全删除该文件,而不仅仅是通过新的提交将其删除。如果这只是在最近的一次提交中引入的,并且之后没有涉及到,那么使用
git-rebase-i
编辑有问题的提交并从提交中删除大文件可能是最简单的。如果它不再存在并多次更改,则使用--索引过滤器的git filter branch
将是正确的选择。完全删除有关大文件的信息需要几个步骤:
1。检查大文件何时出现在提交历史记录中,
git日志--一行--分支--大文件名
然后复制最早的提交id(显示在底部)
2。从最早的相关提交历史记录中删除该文件,
git filter-branch --index-filter 'git rm --ignore-unmatch --cached largefilename' -- <earliest_commit_id>^..
git筛选器分支--索引筛选器“git rm--忽略不匹配--缓存的大文件名”---^。。
3。清理.git中的内容,如下所示:
rm-Rf.git/refs/original
rm-Rf.git/logs/
git gc
git prune--立即过期
4。现在您可以成功地推送到远程。当我使用git rebase时-我得到无法重新设置:您有未老化的更改。此外,索引包含未提交的更改。请提交或隐藏它们。
好吧,按照错误指示执行。对于重定基址,您必须有一个干净的工作区,所以要隐藏您的更改,进行重定基址,进行推送,然后取消更改。输出结果是什么?注意:前两个命令的最后一个--
后面需要一个空格。没有git log--oneline--branchs--**空格在这里**largefilename
。让我们来看看。步骤3是多余的,不是吗?我不会为了推送而清除reflog并执行GC。这只会清理本地存储库并使其变小,但对推送没有任何影响。