我犯了一个“小”错误,并在我的本地存储库中添加了一个“小”(> 100MB)文件。
两次提交后,我试图推送到 github 中限制为 100MB 的远程仓库。
我可以使用 将文件从我当前的提交中删除git rm --cached
,但它仍然在以前的提交中。
如何从所有提交中删除文件?我已经尝试过有关 git filter-branch 的答案,但不适用于我的。
我犯了一个“小”错误,并在我的本地存储库中添加了一个“小”(> 100MB)文件。
两次提交后,我试图推送到 github 中限制为 100MB 的远程仓库。
我可以使用 将文件从我当前的提交中删除git rm --cached
,但它仍然在以前的提交中。
如何从所有提交中删除文件?我已经尝试过有关 git filter-branch 的答案,但不适用于我的。
您可以通过交互式 rebase 更改最后 3 次提交。
git rebase -i HEAD~3
并将提交更改为“编辑”。
我会软重置 3 个最新的提交。然后删除“小”文件。然后将所有更改放入 1 个新提交中。
我认为这并不是很理想,但可以解决问题,因为您还没有进行太多额外的提交。
关于观察:
我已经尝试过有关 git filter-branch 的答案,但不适用于我的。
有关链接答案为何不起作用的更多详细信息将很有用。撇开这一点不谈,我已经成功地多次使用下面的代码来实现相同的目标:
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch <your-file>" \
--prune-empty --tag-name-filter cat -- --all
此命令与 OP 链接的答案中正在讨论的命令大体相似。为清楚起见,值得补充的是,在从存储库GitHub 帮助文章中删除敏感数据1中讨论了此命令。
1文章似乎已移动,因此我已链接archive.is 页面。