3

20 次提交前,我的 git 存储库中添加了一个大型二进制文件。删除这个:

git filter-branch --index-filter "git rm --cached --ignore-unmatch FILE" \
    --prune-empty HEAD

在我的项目历史记录中更改每次提交(~1100)的 SHA1。它确实删除了文件,但我希望只有git push -f少量的修改提交。有没有办法告诉filter-branch只修改带有FILE和后代评论的提交,在我的情况下大约有 20 个提交?

4

1 回答 1

6

如果你知道什么提交引入了文件,最简单的方法是指定$SHA^..HEAD$SHA引入它的提交在哪里)。这将阻止它甚至查看较旧的提交。

如果引入这个文件的提交引入了它,仅此而已,并且此后没有其他提交触及它,那么你可以在没有过滤器分支的情况下更简单地摆脱它,通过使用git rebase --onto $SHA^ $SHA(在哪里$SHA引入这个文件的提交)。这只会$SHA从历史中删除提交。

于 2012-05-31T19:44:50.667 回答