git 尝试在已删除的推送上写入文件

标签 git github terminal

我已经在这个仓库上工作了很长时间,突然遇到了一个问题。我意识到我有一个 350 meg 的 .csv 文件。我推送到 github 的正常程序是:

git add .
git commit -m "some message"
git push

当我意识到它开始写入一个大文件时,我看到它是那个大.csv“shifts.c​​sv”。所以我删除了它,然后就走了

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/

相关文章:

git - Azure devops 显示其他人提交我的代码

git - 像 gitignore 但不是 git ignore

github - 在 GitHub 上有一个公共(public)仓库的私有(private)分支?

github - 内部可见 jenkins 实例中 jenkins 的 webhook 代理

ruby - 在 OSX 上使用 RVM 安装任何 ruby​​ 版本时出错

linux - 设置别名时出现命令行 zsh 错误分配错误

bash - bash 中空格 ""和 '\' 之间的区别

GIT:附加几次提交后制作的补丁

github - 如果有新的提交被推送到分支,是否有一种方法可以使Github取消批准请求请求?

git - 为不同的构建 react native 项目自定义包名称