4

我犯了一个“小”错误,并在我的本地存储库中添加了一个“小”(> 100MB)文件。

两次提交后,我试图推送到 github 中限制为 100MB 的远程仓库。

我可以使用 将文件从我当前的提交中删除git rm --cached,但它仍然在以前的提交中。

如何从所有提交中删除文件?我已经尝试过有关 git filter-branch 的答案,但不适用于我的。

4

3 回答 3

1

您可以通过交互式 rebase 更改最后 3 次提交。

git rebase -i HEAD~3

并将提交更改为“编辑”。

https://help.github.com/articles/about-git-rebase/

于 2017-06-24T10:31:36.790 回答
1

我会软重置 3 个最新的提交。然后删除“小”文件。然后将所有更改放入 1 个新提交中。

我认为这并不是很理想,但可以解决问题,因为您还没有进行太多额外的提交。

于 2017-06-24T10:06:18.507 回答
0

关于观察:

我已经尝试过有关 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 页面

于 2022-02-12T17:54:15.403 回答