我已经在这个仓库上工作了很长时间,突然遇到了一个问题。我意识到我有一个 350 meg 的 .csv 文件。我推送到 github 的正常程序是:
git add .
git commit -m "some message"
git push
当我意识到它开始写入一个大文件时,我看到它是那个大.csv“shifts.csv”。所以我删除了它,然后就走了
git rm shifts.csv
我重新完成了添加、提交和推送的过程,删除它后它仍然试图在推送上写入这个大文件。谷歌搜索找不到解决方案。
最佳答案
Git 可能仍在尝试将文件推送到您的远程存储库,因为尽管
git rm shifts.csv
git commit
从源代码的当前和 future 状态中删除该文件,它仍然存在于存储库历史记录中,在早期提交中,因此当您推送时,Git必须将所有历史记录推送到远程设备,包括其中包含文件的提交,因为它仍然是您早期历史记录的一部分。
您必须以某种方式从存储库的历史记录中完全删除该文件,就好像它在任何时间点都不存在一样。如果创建该文件的提交在您的历史记录中距离不太远,您可以使用交互式 rebase 来删除它,或者如果您不介意丢失工作,则可以进行硬重置。
但是,如果提交深深地埋藏在您的历史记录中,那么您唯一实用的选择可能是使用 git filter-branch
从历史记录中删除该文件。
关于git 尝试在已删除的推送上写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18259295/