所以我对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建议......对于新手来说可能有点混乱。
答案 0 :(得分:5)
听起来你提交了大文件,然后做了另一个删除大文件的提交。这意味着大文件仍处于一个或多个早期提交中。当您推送到GitHub时,您将推送整个存储库,包括所有提交(包括任何具有大文件的提交)。由于文件较大,GitHub实际上拒绝了其中一个较旧的提交。
您无法使用git ls-files
查看文件的原因是它只列出当前索引中的文件(最后一次提交,并更改您要提交的内容)和工作树(当前状态)磁盘上的文件,而不是存储库历史记录中的所有文件。
要解决此问题,您可以按照How to remove/delete a large file from commit history in Git repository?上的步骤操作。这样你就可以把它变成你从未提交过文件。