有没有一种简单的方法从Github历史中删除不需要的文件?

时间:2015-01-04 00:16:18

标签: github git-rewrite-history

我花了半个小时阅读问题和答案,但我还没有找到一个简单的方法来做到这一点。那么,有没有一种简单的方法可以从Github历史中删除不需要的文件(只是为了命名文件并将其删除)?

2 个答案:

答案 0 :(得分:2)

正如@VonC所说,GitHub无法通过用户界面从历史记录中删除文件。作为一个局外人,这将是我对为什么会这样做的看法:

  • 一旦数据在GitHub上播出,它在某种意义上已经太晚了。如果数据是私有,那么将它放在GitHub上已经破坏了该隐私。如果数据真的很大,GitHub已经有了过滤器来阻止大于100MB的文件被推高。
  • 重写历史记录(特别是删除数据)显然是非常具有破坏性的。破坏性的 - 你不一定想要使变得容易的事情。如果他们 包含它,那么他们必须用丑陋的确认来包围它。确实是对话。
  • 在我创建BFG之前,从git历史记录中删除文件的主要工具是git filter-branch在大回购中非常慢 - GitHub将不得不查看这些清理工作到一个长期运行的队列,并告诉你以后回来。在大型回购的情况下,它是could have taken days to complete the job

鉴于这一点,GitHub不会自己支持它是非常合理的。你应该从命令行自己做 - 但不是那么难,我把BFG写到make this process simple

bfg --delete-files myBad.mp3

...现在GitHubAtlassian以及git filter-branch本身的文档推荐了BFG。

顺便提一下,Git是底层的源代码控制软件,GitHub是一家提供托管-Git的公司(所以你正在重写Git历史,而不是 GitHub 历史)。

完全披露:我是BFG Repo-Cleaner的作者。

答案 1 :(得分:1)

不是直接来自GitHub。

你仍然需要在本地克隆它,清理它(例如with BFGfaster than the git filter-branch),并将其推回。
推送将是一个强制推送--force,这意味着您需要通知其他用户该回购,以便他们重置自己的克隆。

例如(使用bfg:" Cleaning Up Git Repositories With The BFG Repo-Cleaner"):

bfg --delete-files id_{dsa,rsa}  my-repo.git