我不小心提交了一个大型zip文件并推送到了bitbucket。
现在,我已将文件添加到.gitignore
并使用git rm --cached
将其删除并提交删除文件。
但是当我git checkout
之前提交时,大型zip文件仍然存在。意思是它仍然在git repo中。
如何完全删除这个大型zip文件?
提前致谢。
答案 0 :(得分:2)
因为在包含大型二进制文件的提交之上只有一个提交,所以您可以避免使用交互式rebase。
首先,核对你删除大型二进制文件的第二次提交:
git reset --hard HEAD~1
这使您处于刚刚提交大型二进制文件时的状态。
现在,此时大二进制文件应该再次出现在本地。删除此文件,然后将该更改添加到索引中,如果Git尚未为您完成此操作。
最后,通过以下方式修改错误提交:
git commit --amend
要将这个分支推到Bitbucket,你必须强制推动,因为你重写了历史:
git push --force origin feature
请记住强制推送重写远程历史记录,这可能会导致其他任何人共享此分支时出现问题。在你的情况下,这样做的好处可能是超重,因为你的历史中有一个巨大的二进制文件。
答案 1 :(得分:0)
最安全且可能最干净的方法是以交互方式进行变基调。
git rebase -i HEAD^^
或者,
git rebase -i your-commit-no^
从那里你可以压缩提交,这会将一个或多个提交放在上一个提交中。要从历史记录中完全删除提交,请从列表中删除该行。
您可以使用
还原提交git revert
但它会向历史记录添加更多提交消息,这可能是不可取的。使用-n参数告诉Git不要立即提交revert。你可以以交互方式进行折扣,然后将这些东西压在上一次提交之前,以保持清洁。
如果你在这里使用的两个提交会影响同一个文件,你可能会看到合并冲突。
使用
重置存储库git reset --hard
应该小心,因为它无法撤消。
重写历史应该小心。