删除旧提交:`git rebase`导致合并冲突

Dan*_*mer 5 git git-merge git-rebase

不幸的是,我们不久前意外地检查了一个大的二进制文件,直到今天没有人注意到.现在我想删除该提交并保留剩余的历史记录.我知道改变推进历史的警告,但在这种情况下,我无法避免它.

我一直试图达到这个~1h但却未能得到它.我找到的最好的命令是

git rebase --interactive --preserve-merges $(EVIL_COMMIT)^
Run Code Online (Sandbox Code Playgroud)

并在编辑器中评论出第一次提交是邪恶的.

不幸的是,git rebase在合并时停止并提示手动解决合并冲突.邪恶的提交只添加了我们的软件为测试目的计算的一些示例文件.因此,它们不应该与刚刚丢失的示例文件发生任何冲突.

  1. 我不明白合并冲突的起源.有人可以解释一下吗?
  2. 怎么解决?

我在Google和SO搜索上花了很多时间.一些线程涵盖了类似的主题,但是使用的语法在今天的Git版本中不再可用,或者它对我不起作用(我之前仅描述了一种方法,因为它是最简单的方法).

kni*_*ttl 6

我会去filter-branch:

git filter-branch --prune-empty --index-filter '
  git rm --cached --ignore-unmatch path/to/file
' --all
Run Code Online (Sandbox Code Playgroud)

  • 将`--prune-empty`添加到filter branch命令. (2认同)