Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种简单的方法可以从Github历史记录中删除不需要的文件?_Github_Git Rewrite History - Fatal编程技术网

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

有没有一种简单的方法可以从Github历史记录中删除不需要的文件?,github,git-rewrite-history,Github,Git Rewrite History,我花了半个小时阅读问题和答案,但仍然没有找到一个简单的方法。那么,有没有一种简单的方法可以从Github历史记录中删除不需要的文件(只是命名并删除它)?不是直接从Github中删除 您仍然需要在本地克隆它,清理它(例如),然后将其推回。 推送将是一个force-one-git推送--force,这意味着您需要通知其他用户该repo,以便他们重置自己的克隆 例如(使用bfg:): 不是直接从GitHub 您仍然需要在本地克隆它,清理它(例如),然后将其推回。 推送将是一个force-one-git

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

不是直接从Github中删除

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

例如(使用bfg:):


不是直接从GitHub

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

例如(使用bfg:):


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

  • 一旦数据上传到GitHub上,从某种意义上说已经太晚了。如果数据是私有的,那么将其放在GitHub上已经损害了隐私。如果数据真的很大,GitHub已经安装了过滤器来阻止任何大于100MB的文件被推高
  • 重写历史(尤其是删除数据)显然是非常具有破坏性和破坏性的——这类事情你不一定想让它变得容易。如果他们真的包含了它,他们就必须用难看的确认对话框来围绕它
  • 在我创建BFG之前,从git历史记录中删除文件的主要工具是
    git filter branch
    ,这在大型回购中非常缓慢——GitHub必须将这些清理工作放到一个长时间运行的队列中,然后告诉您稍后再来。在大型回购的情况下,这是一种风险
考虑到所有这些,GitHub本身不支持它是非常合理的。您应该自己从命令行完成这项工作,但这并不难,我在BFG中写道:

…BFG现在由推荐,并且也在文档中为自己推荐

顺便说一句,Git是底层的源代码控制软件,GitHub是一家提供托管Git的公司(因此您正在重写Git历史,而不是GitHub历史)


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

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

  • 一旦数据上传到GitHub上,从某种意义上说已经太晚了。如果数据是私有的,那么将其放在GitHub上已经损害了隐私。如果数据真的很大,GitHub已经安装了过滤器来阻止任何大于100MB的文件被推高
  • 重写历史(尤其是删除数据)显然是非常具有破坏性和破坏性的——这类事情你不一定想让它变得容易。如果他们真的包含了它,他们就必须用难看的确认对话框来围绕它
  • 在我创建BFG之前,从git历史记录中删除文件的主要工具是
    git filter branch
    ,这在大型回购中非常缓慢——GitHub必须将这些清理工作放到一个长时间运行的队列中,然后告诉您稍后再来。在大型回购的情况下,这是一种风险
考虑到所有这些,GitHub本身不支持它是非常合理的。您应该自己从命令行完成这项工作,但这并不难,我在BFG中写道:

…BFG现在由推荐,并且也在文档中为自己推荐

顺便说一句,Git是底层的源代码控制软件,GitHub是一家提供托管Git的公司(因此您正在重写Git历史,而不是GitHub历史)


全面披露:我是BFG回购清理程序的作者。

我没有投反对票,但我猜投反对票是因为这个问题可能会被解释为重复:-从历史中删除文件是一个令人困惑的领域,即使是有经验的Git用户,人们也会以各种不同的方式询问它。我甚至被Stackoverflow版主要求停止回答他们,因为我的很多回答都提到了我自己的项目,BFG:|如果你觉得我的回答有帮助,请告诉我!多谢各位,我是一名git初学者,我真的只是想知道是否可以不经过太多程序就完成这项工作。我没有投反对票,但我猜投反对票是因为这个问题可能会被解释为重复:-即使对于有经验的git用户来说,从历史中删除文件也是一个令人困惑的领域,人们用很多不同的方式来询问。我甚至被Stackoverflow版主要求停止回答他们,因为我的很多回答都提到了我自己的项目,BFG:|如果你觉得我的回答有帮助,请告诉我!非常感谢,伙计,我是一个git初学者,我真的只是想知道不需要太多的程序就可以做到这一点。
bfg --delete-files id_{dsa,rsa}  my-repo.git
bfg --delete-files myBad.mp3