如何删除 2 个 git 提交回来的大文件?

Mat*_*der 3 git commit undo rollback

本质上我想回滚本地存储库中的两个提交。尚未将任何内容推送到远程。

因此,在我的 GIT 存储库中,我不小心在提交 (A) 中添加了一个巨大的 zip 文件。我意识到了这一点,使用 finder 删除了 zip 文件并进行了另一次提交 (B)。

但现在我意识到,如果我将其推送到远程,它将包括整个 zip 文件......

为了让事情变得更复杂,我还在第一次提交 (A) 中对几个文件进行了一系列重要的更改,我不想丢失这些更改。

在推送到远程之前,如何从历史记录中删除该 zip 文件?我是否可以恢复到这两次提交之前的文件状态,而不会丢失在其他几个文件中所做的所有更改?

edi*_*999 6

修复它的最简单方法是使用命令git reset <commit>

在您的情况下,由于您想回滚两次提交,您可以执行以下操作:

git reset HEAD~2

git help reset

git重置[<mode>] [<commit>]

--mixed 重置索引但不重置工作树(即保留更改的文件但不标记为提交)并报告尚未更新的内容。这是默认操作。

之后,您的存储库中的文件将根本不会更改,但两个最新的提交将不再存在。

然后,您可以像平常一样选择要提交的文件。