脚本删除Git中所有二进制文件的历史记录,而不删除文件本身

脚本删除Git中所有二进制文件的历史记录,而不删除文件本身,git,history,github,Git,History,Github,假设我有一个巨大的git存储库,其中有许多SWF和图像。我希望它们包含在托管的github存储库中,但不需要对它们进行版本控制,也不希望将它们存储在其他地方 每次我提交到存储库时,删除它们的历史记录的最简单方法是什么。。。最终,我拥有所有主权财富基金和图像,但没有它们的历史 编辑:swf文件可能会经常更改,因此我们可以指望每次提交都有不同的版本。不是直接的答案,但我不确定这里是否有问题: 如果您的SWF和图像文件不移动,则它们在提交后将具有相同的SHA1提交。它们将占用相同的磁盘空间并引用相同的

假设我有一个巨大的git存储库,其中有许多SWF和图像。我希望它们包含在托管的github存储库中,但不需要对它们进行版本控制,也不希望将它们存储在其他地方

每次我提交到存储库时,删除它们的历史记录的最简单方法是什么。。。最终,我拥有所有主权财富基金和图像,但没有它们的历史


编辑:swf文件可能会经常更改,因此我们可以指望每次提交都有不同的版本。

不是直接的答案,但我不确定这里是否有问题:

如果您的SWF和图像文件不移动,则它们在提交后将具有相同的SHA1提交。它们将占用相同的磁盘空间并引用相同的blob。 根据:

blob对象只是一块二进制数据。它没有引用任何其他内容,也没有任何类型的属性,甚至没有文件名

由于blob完全由其数据定义,因此,如果目录树中的两个文件或存储库的多个不同版本中的两个文件具有相同的内容,则它们将共享相同的blob对象。 对象完全独立于其在目录树中的位置,重命名文件不会更改与该文件关联的对象


如果您的资源文件swf和图像随着时间的推移而变化,记录它们的历史非常有趣,能够及时返回并查看一致的配置,即源+资源在当时有效,这不是一个直接的答案,但我不确定这里是否有问题:

如果您的SWF和图像文件不移动,则它们在提交后将具有相同的SHA1提交。它们将占用相同的磁盘空间并引用相同的blob。 根据:

blob对象只是一块二进制数据。它没有引用任何其他内容,也没有任何类型的属性,甚至没有文件名

由于blob完全由其数据定义,因此,如果目录树中的两个文件或存储库的多个不同版本中的两个文件具有相同的内容,则它们将共享相同的blob对象。 对象完全独立于其在目录树中的位置,重命名文件不会更改与该文件关联的对象


而且,如果您的资源文件swf和图像随着时间的推移而变化,那么记录它们的历史非常有趣,因为能够及时返回并查看一致的配置,即源+资源在当时有效

如果不破坏整个存储库时间线的SHA1完整性,就不可能删除历史。这是Git最强大的特性之一:每个提交id都是根据其完整的历史时间线构建的哈希

但据我所知,二进制对象存储在某种差异中,因此不会浪费太多存储空间——如果这是您关心的话


否则,如果您只是想将大的二进制数据转移到其他地方,请尝试使用子模块。

如果不破坏完整存储库时间表的SHA1完整性,则无法删除历史记录。这是Git最强大的特性之一:每个提交id都是根据其完整的历史时间线构建的哈希

但据我所知,二进制对象存储在某种差异中,因此不会浪费太多存储空间——如果这是您关心的话


否则,如果您只是想将大的二进制数据转移到其他地方,请尝试使用子模块。

为什么不提交soucre代码而不是编译的二进制文件?我在想,如何利用GithubPages,而不必使用S3之类的工具来托管资产。假设我有一个静态博客,上面有1000多个Flex项目的示例,我想展示演示swf。最简单的方法是将其包含在存储库中。下一步是将其加载到某个免费站点或设置S3。在这种情况下,我不能只显示源代码。为什么不提交soucre代码而不是已编译的二进制文件?我在想,如何利用GithubPages,而不必使用S3之类的东西来托管资产。假设我有一个静态博客,上面有1000多个Flex项目的示例,我想展示演示swf。最简单的方法是将其包含在存储库中。下一步是将其加载到某个免费站点或设置S3。在这种情况下,我不能只显示来源。