首页 > 解决方案 > 从整个 git 历史记录中删除文件

问题描述

我知道这个问题已经被问过了,但是在每个答案中,我发现情况与我的情况略有不同,我不知道如何适应它。

所以这里是问题:

我克隆了一个存储库并添加了一个文件夹以在其中工作。在这个文件夹中,我添加了 .csv 文件和使用 csv 文件的 .py 文件。我试图推动这一点,但意识到这需要很长时间,因为 2 个 csv 文件非常大。所以我

git rm files

然后提交。我尝试再次推送,然后才意识到删除文件不会将其从 git 历史记录中删除。// 所以现在,从上次完成的推送中,我有 2 个提交:1 个我添加文件的地方,1 个我删除的地方一些.csv。

我希望您能帮助我删除最后 2 次提交。这可行吗?谢谢

标签: gitcommitgit-rm

解决方案


我发现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

(请参阅文档页面上的详细信息,我没有在这里复制粘贴整个内容)


推荐阅读