35

使用 git 进行项目时,我不小心将一个大.zip文件添加到了提交中。直到我开始将它上传到 github 时我才注意到。当我注意到时,我点击,ctrl-c并再次上传(现在文件未跟踪)。git removegit commit

我知道这不是正确的选择,因为一旦我提交了.zip,它就会留在仓库中,直到我恢复提交,但遗憾的是我没有。

现在,当有人尝试从 repo 下载时,需要花费很多时间,有时会产生收益git the remote end hung up unexpectedly(我读过可以通过做一些来解决git config)并且非常烦人。

我的观点是:有没有办法告诉进一步的拉/取请求在这个特定的提交版本中忘记了这个特定的文件?

4

2 回答 2

63

Github 提供了一个有用的帮助页面来删除这样的文件。StackOverflow 上还有其他问题涵盖了这一点

另请参阅Pro Git book 的这一部分,其中给出了一个示例:

要从整个历史记录中删除名为 passwords.txt 的文件,可以使用 --tree-filter 选项来过滤分支:

$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21)
Ref 'refs/heads/master' was rewritten

清理后,您还可以尝试git gc进一步压缩和清理存储库。

于 2013-06-01T21:43:15.140 回答
4

现在有一个名为“BFG Repo-Cleaner”的工具,它在 github.com 上被提及作为 filter-branch 的替代品https://help.github.com/articles/remove-sensitive-data/

链接到工具页面https://rtyley.github.io/bfg-repo-cleaner/

于 2015-05-28T12:10:09.087 回答