所以我对git很新,而且我已经有点发酵了.
我对我的本地副本进行了许多新的更改,与我的github repo冲突(但是我的本地副本是正确的,我只想覆盖远程仓库).本地和远程副本分为2和3次提交.
我还意外地将一些非常大的csv文件添加到我的本地提交中,现在我无法推送到远程仓库,git push -f
因为github拒绝了大文件.
现在我删除了文件,并将它们从提交中删除git rm --cached "filename.csv"
,git commit --amend -CHEAD
并且它们不再在提交中,因为我可以告诉它从git ls-files | grep "*.csv"
哪个返回空白.
但是当我git push -f
在不再跟踪它们之后尝试使用时,github仍会检测到它们并拒绝我的推送,因为它们太大了,尽管它们不再在文件系统或提交中.
如何推送本地副本以覆盖远程并获得推送以实现我不再拥有大文件?
提前感谢任何和所有git建议...对于新手来说可能有点混乱.
听起来你已经提交了大文件,然后做了另一个删除大文件的提交.这意味着大文件仍处于一个或多个早期提交中.当您推送到GitHub时,您将推送整个存储库,包括所有提交(包括任何具有大文件的提交).由于文件较大,GitHub实际上拒绝了其中一个较旧的提交.
您无法看到该文件的原因git ls-files
是它只列出当前索引中的文件(最后一次提交,并更改您要提交的内容)和工作树(磁盘上文件的当前状态),而不是存储库历史记录中的所有文件.
要解决此问题,您可以按照如何从Git存储库中的提交历史记录中删除/删除大文件的步骤进行操作?.这样你就可以使它好像你从未提交过文件一样.