一个大的二进制文件被添加到我的git存储库20提交之前。删除它:
git filter-branch --index-filter "git rm --cached --ignore-unmatch FILE" \
--prune-empty HEAD
在项目历史记录中为每次提交(~1100)更改SHA1。它确实删除了文件,但我希望只有git push -f
只有少量的修改提交。有没有办法告诉filter-branch
只修改FILE
和后代评论的提交,在我的情况下约20次提交?
答案 0 :(得分:6)
如果你知道什么提交引入了文件,最简单的方法是指定$SHA^..HEAD
(其中$SHA
是引入它的提交)。这样可以防止它查看较旧的提交。
如果引入此文件的提交仅引入了它,并且没有其他提交,从那时起就触及它,那么你可以在没有filter-branch的情况下更简单地删除它,使用git rebase --onto $SHA^ $SHA
(其中$SHA
是引入此文件的提交)。这只会从历史记录中删除提交$SHA
。