如何在Github上减少repo的大小

时间:2009-10-20 19:06:37

标签: git github

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

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

2 个答案:

答案 0 :(得分:11)

如果没有修改历史记录就无法移除它们,所以如果有人撤消了更改,您可能需要处理这些混乱 - 请参阅man git-rebase中的recovering from upstream rebase。这可能非常糟糕,取决于您的工作流程 - 您可能需要以某种方式让每个人都知道他们需要切换到“新”主分支,重新定位正在进行的任何工作。

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

git reset --hard HEAD^

或修改它:

git rm test.wav
git commit --amend

但是因为它不再是小费,你最好的选择可能是通过交互式基础来做到这一点:

git rebase -i <commit-before-mistake>

在您要修复的提交上将“选择”更改为“编辑”,然后进行操作! (如果可以的话,甚至删除整个提交)*

在你选择了这些中的任何一个之后,你必须强行推动,因为它不再是快进:

git push -f origin

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

git filter-branch --index-filter ’git rm --cached --ignore-unmatch filename’ HEAD

答案 1 :(得分:2)

  1. 从您提交的分支机构的本地历史记录中删除它。一种方法是使用git commit --amend,如果它是你的HEAD提交;另一个是git rebase --interactive
  2. 强制将更新的分支推送到github。

    git push --force github
    

    (其中github是GitHub的遥控器名称。)

  3. 这会将其从活动历史记录中删除。要实际回收空间,GitHub将需要进行垃圾收集。如果他们不自动执行此操作,我不确定如何明确地执行此操作。您可能需要提交支持请求。