微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从以前的 Git 提交中删除文件

如何解决如何从以前的 Git 提交中删除文件

我正在使用 GitHub,但在处理大文件时遇到了一些问题。

我更新了一个 3rd 方库,它添加一个大小为 119.41 MB 的文件。所以现在在 Sourcetree 中,当我尝试推送到 GitHub 时,我收到以下警告:

remote: error: File Pods/Realm/core/realm-monorepo.xcframework/watchos-arm64_i386_x86_64-simulator/librealm-monorepo.a is 119.41 MB; this exceeds GitHub's file size limit of 100.00 MB

不幸的是,我在那次提交后做了很多工作,需要推送到 repo。

有没有办法遍历项目的每个历史提交并删除所有名称librealm-monorepo.a文件

抱歉,如果这是一个明显的问题,但我的 Git 技能非常薄弱,而且我很担心不小心把整个项目搞砸了。所以所有的建议将不胜感激:)

解决方法

您可以将 tree-filterfilter-branch 一起使用,这将从历史记录中完全删除文件,

git filter-branch --tree-filter 'rm -rf librealm-monorepo.a' HEAD

编辑 1:开始

为了重写历史,Git 现在建议使用名为 git filter-repo 的替代工具而不是 filter-branch

来自 Git 文档:

请使用替代的历史过滤工具,例如 git filter-repo

上面的 filter-branch 命令可以针对建议的 filter-repo 重写如下:

git filter-repo --invert-paths --path librealm-monorepo.a

编辑 1:结束

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。