我不小心做了一个本地提交,其中包含一个我忘记添加到.gitignore的巨大文件(〜2GB)。该提交还包含对其他文件的重要更改。然后,我又做了一些无关的本地提交。
当我进行推送时,由于文件大小和相关问题,推送最终失败了,直到那时我才意识到我不小心添加了该文件。
是否有某种方法可以返回并从过去的提交中删除该文件(之前是4个提交,而整个系列的提交仍未推送),就好像它不存在一样?我仍然想保留其余更改,避免有问题的提交。
答案 0 :(得分:2)
git rebase -i HEAD~5
,如果在过去5次提交中没有合并或插入适当的sha。选择提交进行编辑。修改提交,然后修改更改。 git rebase --continue
答案 1 :(得分:2)
您可以使用rebase -i来做到这一点,但这是一个简单的解决方法:
git checkout HEAD~4
git rm --cached the-file
git commit --amend --no-edit
git cherry-pick the-branch~4..the-branch # replay all revisions after the revision we modified
git branch -f the-branch # set branch to new location
git checkout the-branch
那应该做