我不小心将一些大型测试wav文件提交到我的存储库中,他们在我的Github帐户上占用了大量空间.如何从历史记录中删除这些文件?
注意:这些文件是在一段时间之前提交的,并不在HEAD提交中.
没有修改历史记录就没有办法删除它们,所以如果有人撤消了更改,你可能不得不处理那些混乱 - 请参阅从上游的 rebase中恢复man git-rebase
.这可能非常糟糕,取决于您的工作流程 - 您可能必须让每个人都知道他们需要切换到"新"主分支,重新定位正在进行的任何工作.
如果提交仍在提示中,您可以在它之前重置为提交:
git reset --hard HEAD^
或修改它:
git rm test.wav git commit --amend
但由于它不再是小费,你最好的选择可能是通过交互式底板来做到这一点:
git rebase -i
在要修复的提交上将"选择"更改为"编辑",然后使用它!(如果可以,甚至删除整个提交)*
在完成你选择的任何一个之后,你将不得不强制推动,因为它不再是快进:
git push -f origin
*如果您随后对这些文件进行了修改,那么在您继续使用rebase时会遇到问题.他们应该直截了当地处理,因为你只是希望文件消失.当然,如果从那时起已经有一百次提交,这些都会引起冲突,你可以看看git-filter-branch
.手册页中的相关示例是:
git filter-branch --index-filter ’git rm --cached --ignore-unmatch filename’ HEAD