Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git推送因文件太大而失败,如何推送?_Git_Macos_Github_Netbeans_Version Control - Fatal编程技术网

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

我有一个大文件提交和推送,但后来失败了。之后,我删除了这个大文件,并在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/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。这只会清理本地存储库并使其变小,但对推送没有任何影响。