我在Git上有一个简单的项目,但遗憾的是我提交了一个大约4个提交前的200mb文件。这意味着我无法将其推送到原点,因为它超过了Github的100mb文件大小限制。我已经在后续提交中删除了该文件,但它仍保留在提交历史记录中,阻止我推送到原点。如何删除那个旧的提交,同时保持最新的提交完整?
答案 0 :(得分:0)
使用rebase最容易做到这一点。我推荐使用this answer中描述的交互式rebase方法。
但是有更直接的方式。首先,找出哪个提交确实存在问题。让我们说它是提交1234abc
。您可以使用git rebase --onto 1234abc^ 1234abc
从历史记录中删除该提交。
当rebase运行时,你将不得不修复一些提交。如果您发生恐慌,可以在使用git rebase --abort
启动rebase之前返回。 rebase可能会要求您解决一些冲突,例如在您删除(现在不存在)文件的提交中。那里没有任何东西可以移除;可能git rebase --continue
将使rebase继续进行。
在rebase之后,原始文件内容仍然会出现在.git
文件夹中,但您仍然可以推送到GitHub。如果您还想缩小.git
文件夹,请运行git prune
。