Dan*_*mer 5 git git-merge git-rebase
不幸的是,我们不久前意外地检查了一个大的二进制文件,直到今天没有人注意到.现在我想删除该提交并保留剩余的历史记录.我知道改变推进历史的警告,但在这种情况下,我无法避免它.
我一直试图达到这个~1h但却未能得到它.我找到的最好的命令是
git rebase --interactive --preserve-merges $(EVIL_COMMIT)^
Run Code Online (Sandbox Code Playgroud)
并在编辑器中评论出第一次提交是邪恶的.
不幸的是,git rebase在合并时停止并提示手动解决合并冲突.邪恶的提交只添加了我们的软件为测试目的计算的一些示例文件.因此,它们不应该与刚刚丢失的示例文件发生任何冲突.
我在Google和SO搜索上花了很多时间.一些线程涵盖了类似的主题,但是使用的语法在今天的Git版本中不再可用,或者它对我不起作用(我之前仅描述了一种方法,因为它是最简单的方法).
我会去filter-branch:
git filter-branch --prune-empty --index-filter '
git rm --cached --ignore-unmatch path/to/file
' --all
Run Code Online (Sandbox Code Playgroud)