git - 从整个 git 历史记录中删除文件
问题描述
我知道这个问题已经被问过了,但是在每个答案中,我发现情况与我的情况略有不同,我不知道如何适应它。
所以这里是问题:
我克隆了一个存储库并添加了一个文件夹以在其中工作。在这个文件夹中,我添加了 .csv 文件和使用 csv 文件的 .py 文件。我试图推动这一点,但意识到这需要很长时间,因为 2 个 csv 文件非常大。所以我
git rm files
然后提交。我尝试再次推送,然后才意识到删除文件不会将其从 git 历史记录中删除。// 所以现在,从上次完成的推送中,我有 2 个提交:1 个我添加文件的地方,1 个我删除的地方一些.csv。
我希望您能帮助我删除最后 2 次提交。这可行吗?谢谢
解决方案
我发现git filter-branch
文档中的第一个示例非常适合您的上下文。看看(来源):
假设您想从所有提交中删除一个文件(包含机密信息或侵犯版权):
git filter-branch --tree-filter 'rm filename' HEAD
# and see also the variant further in the example description
git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD
(请参阅文档页面上的详细信息,我没有在这里复制粘贴整个内容)
推荐阅读
- android - MVI 中的共享视图模型
- java - 从 Java 程序调用命令历史记录
- r - 将数据框导出到 R 中的文本文件
- python - ImportError:在 ImageAI 视频对象检测期间无法从“keras.utils.generic_utils”导入名称“LazyLoader”
- javascript - 如何解决自定义元素错误,当我尝试在 vue.js 中的组件之间切换时出现此错误?
- python - 无法在 Python 中解析 XML 文件 - xml.etree.ElementTree.ParseError
- android - 了解垃圾收集器日志颤动
- angular - 如何在 Keycloak Angular 的新选项卡中打开帐户管理
- pdf - 如何从pdf中提取部分并将它们合并为一个pdf
- python - 按 ID 有效地将数据结构化为系列