如何在Github上减少repo的大小

Cor*_*ook 8 git github

我不小心将一些大型测试wav文件提交到我的存储库中,他们在我的Github帐户上占用了大量空间.如何从历史记录中删除这些文件?

注意:这些文件是在一段时间之前提交的,并不在HEAD提交中.

Cas*_*bel 11

没有修改历史记录就没有办法删除它们,所以如果有人撤消了更改,你可能不得不处理那些混乱 - 请参阅从上游的 rebase中恢复man git-rebase.这可能非常糟糕,取决于您的工作流程 - 您可能必须让每个人都知道他们需要切换到"新"主分支,重新定位正在进行的任何工作.

如果提交仍在提示中,您可以在它之前重置为提交:

git reset --hard HEAD^
Run Code Online (Sandbox Code Playgroud)

或修改它:

git rm test.wav
git commit --amend
Run Code Online (Sandbox Code Playgroud)

但由于它不再是小费,你最好的选择可能是通过交互式底板来做到这一点:

git rebase -i <commit-before-mistake>
Run Code Online (Sandbox Code Playgroud)

在要修复的提交上将"选择"更改为"编辑",然后使用它!(如果可以,甚至删除整个提交)*

在完成你选择的任何一个之后,你将不得不强制推动,因为它不再是快进:

git push -f origin
Run Code Online (Sandbox Code Playgroud)

*如果您随后对这些文件进行了修改,那么在您继续使用rebase时会遇到问题.他们应该直截了当地处理,因为你只是希望文件消失.当然,如果从那时起已经有一百次提交,这些都会引起冲突,你可以看看git-filter-branch.手册页中的相关示例是:

git filter-branch --index-filter ’git rm --cached --ignore-unmatch filename’ HEAD
Run Code Online (Sandbox Code Playgroud)