【问题标题】:Is there a simple way to remove unwanted file from Github history?有没有一种简单的方法可以从 Github 历史记录中删除不需要的文件?
【发布时间】:2015-01-04 00:16:18
【问题描述】:

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

【问题讨论】:

  • 我没有投反对票,但我猜反对票是因为这个问题可能被解释为重复:stackoverflow.com/a/21031833/438886stackoverflow.com/a/14656358/438886stackoverflow.com/a/17890278/438886 - 从历史记录中删除文件是一个令人困惑的问题甚至对于经验丰富的 Git 用户来说也是如此,人们会以多种不同的方式询问它。我什至被 Stackoverflow 版主要求停止回答他们,因为我的很多回答都提到了我自己的项目 BFG :|如果您觉得我的回答有帮助,请告诉我!
  • 非常感谢,我是一个 git 初学者,我真的只是想知道是否可以在没有太多程序的情况下做到这一点。

标签: github git-rewrite-history


【解决方案1】:

正如@VonC 所说,GitHub 不提供通过其 UI 从历史记录中删除文件的功能。作为一个局外人,这就是我对为什么会这样的看法:

  • 一旦数据上传到 GitHub,从某种意义上说已经为时已晚了。如果数据是私有,那么将其放在 GitHub 上已经损害了该隐私。如果数据真的很大,GitHub 已经有过滤器来阻止任何大于 100MB 的文件被推送。
  • 重写历史记录(尤其是删除数据)显然非常具有破坏性和破坏性 - 您不一定想让这种事情使变得容易。如果他们确实包含它,他们将不得不用丑陋的确认对话框包围它。
  • 在我创建 BFG 之前,从 git 历史记录中删除文件的主要工具是 git filter-branch,这在大型 repos 上非常慢 - 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 的作者。

【讨论】:

    【解决方案2】:

    不是直接来自 GitHub。

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

    例如(与 bfg:“Cleaning Up Git Repositories With The BFG Repo-Cleaner”):

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

    【讨论】:

      猜你喜欢
      • 2015-05-08
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      • 2018-10-21
      • 2011-04-22
      • 1970-01-01
      相关资源
      最近更新 更多