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

时间:2010-03-01 11:14:36

标签: git history github

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

每次提交存储库时,我可以删除历史记录的最简单方法是什么? ......这样,最后,我拥有所有swfs和图像,但没有历史记录。

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

2 个答案:

答案 0 :(得分:5)

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

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

  

“blob”对象只不过是一大块二进制数据。它不引用任何其他内容或具有任何类型的属性,甚至不是文件名。

     

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

如果你的“资源”文件(swf和图像)及时发展,记录他们的历史记录很有意思,能够及时回到并看到一致的配置(即源+资源当时有效)

答案 1 :(得分:2)

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

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

否则,如果您只是希望获取大二进制数据并将其托管在其他位置,请尝试使用子模块。