GitHub 上传文件过大报错:remote: warning: Large files detected.以及non-fast-forward冲突

昨天折腾了好久终于弄好了一个 GitHubGitHub 库——f-zyj/ACM,用来放过去两年搞 ACMACM 我所写的代码以及整理的资源。

今天,上传了一些 PDFPDF 文件,结果没想到因为过大而报错:

remote: warning: File xxx/…/xxx.xxx is 51.00 MB; this is larger than GitHub’s recommended maximum file size of 50 MB

报错提示十分清楚的告诉我们文件 xxx/…/xxx.xxxxxx/…/xxx.xxx 是多么大的文件,而 GitHubGitHub 的最大限制是文件不能超过 50 MB50 MB,所以想当然的,直接删除了大文件,然后 addadd 并且 commitcommit,可是问题依然存在,报错信息依然没有变。

想了想可能是因为已经 add 并且 commit 过的这样删除是不行,于是用 git rm -r --cached file_pathgit rm -r --cached file_path 了一下,重新 add 然后 commit,可是 push 时报错信息依然没有变。

找了好久,从一个大佬的博客里找到如下一句命令可以解决问题:

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch *.sql'

这里需要将 * .sql 替换为报错信息中所给的 xxx/…/xxx.xxxxxx/…/xxx.xxx 就行了。

注意:将 .sql替换为您的文件名或文件类型。 要非常小心,因为这会经历每次提交并将此文件类型翻录出来。*

最后,千万要注意别上传太大的文件,50 M50 M 是一个红线。

然后git push的时候还可能出现这样的错误:non-fast-forward

问题(Non-fast-forward)的出现原因在于:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。于是你有2个选择方式:

1,强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容

git push -f

2,先把git的东西fetch到你本地然后merge后再push

$ git fetch

$ git merge

这2句命令等价于

$ git pull  

可是,这时候又出现了如下的问题:

GitHub 上传文件过大报错:remote: warning: Large files detected.以及non-fast-forward冲突_第1张图片

上面出现的 [branch “master”]是需要明确(.git/config)如下的内容
[branch “master”]
remote = origin
merge = refs/heads/master

这等于告诉git2件事:
1,当你处于master branch, 默认的remote就是origin。

2,当你在master branch上使用git pull时,没有指定remote和branch,那么git就会采用默认的remote(也就是origin)来merge在master branch上所有的改变
如果不想或者不会编辑config文件的话,可以在bush上输入如下命令行:

$ git config branch.master.remote origin  
$ git config branch.master.merge refs/heads/master

之后再重新git pull下。最后git push你的代码吧。it works now~

参考链接:https://blog.csdn.net/sinat_25306771/article/details/55257901

你可能感兴趣的:(git)