在git存储库中高效存储二进制文件

时间:2009-04-28 19:33:44

标签: git file binary versioning

我想拥有一个主要由二进制文件组成的git存储库。

我需要跟踪已更改,添加和删除的文件到存储库,但我不希望git对文件内容进行版本化。

换句话说,我只需要git来跟踪更改(更改日志),而不是内容。

git可以实现这一点吗?

我应该为此使用其他东西吗?

5 个答案:

答案 0 :(得分:13)

@Tobu's answer到此related question

  

要版本化并传播二进制文件而不将它们实际存储在git中,请尝试git-annex

答案 1 :(得分:9)

git是一个内容跟踪器,所以如果你不想跟踪内容,它听起来就像是错误的工具。但是,我不确定如何在不跟踪其内容的情况下跟踪文件的更改。

答案 2 :(得分:2)

如果您不想存储这些垃圾箱,那么您可以在文件上使用二进制差异工具,然后将输出提交到版本控制中。然后可以将任何文本更改日志条目输入到提交消息中。

答案 3 :(得分:1)

也许我不明白你的问题,但如果你在文本文件中存储所有文件的时间戳呢?然后,您可以仅在版本控制中存储该文件,并让您的VCS区分它的不同版本。

答案 4 :(得分:0)

  

但我不想让git对文件本身的内容进行版本化。

这正是Git Large File Storage (LFS)的作用(GitHub,2015年4月)。

项目为git-lfs(请参阅 git-lfs.github.com ),并通过服务器测试支持:lfs-test-server
您只能在git仓库中存储元数据,在其他地方存储大型文件。

https://cloud.githubusercontent.com/assets/1319791/7051226/c4570828-ddf4-11e4-87eb-8fc165e5ece4.gif

  
      
  • 大文件通过HTTPS分别同步到可配置的Git LFS服务器,因此您不必限制推送Git存储库的位置。

  •   
  • 大型文件仅在签出时从服务器同步,因此当不需要时,本地存储库不会承担每个文件的每个版本的权重。

  •   
  • 存储在Git中的元数据是可扩展的,以备将来使用。它目前包含文件内容的散列和文件大小,以便客户端在下载或退出大量下载时可以显示进度条。

  •