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

13

我希望有一个git仓库,主要包含二进制文件。

我需要跟踪仓库中的已更改、新增和删除文件,但不想让git版本化文件本身的内容。

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

使用git能实现这一点吗?

还是应该使用其他工具来处理?


为什么你不希望具体跟踪这个内容? - Sedat Kapanoglu
3
我不知道@Dema的原因是什么,但git-annex对此描述了两种用例:http://git-annex.branchable.com/ - user23987
这是一个重复的问题,链接为https://dev59.com/GHRB5IYBdhLWcg3wtZQV。 - dbn
自2015年4月起,您可以考虑使用git-lts。请参见我的回答 - VonC
5个回答

13

11

Git 是一个内容跟踪工具,如果你不想跟踪内容的话,似乎这就不是合适的工具。但是我不确定在没有跟踪文件内容的情况下如何追踪文件的更改。


4
我不同意这是错误的工具;Git 同时也是一个用户空间文件系统,有很多“管道”命令可用,因此可以在版本控制之外以新颖的方式使用。 - user23987
我遇到了类似的问题...你有没有关于跟踪多个二进制文件的“正确”工具的建议? - eykanal
-1 给 Toolbear。Git 不适用于跟踪二进制文件(在其直接用法中)...还有什么是“用户空间文件系统”??? - voila

2

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


1

但我不希望Git版本控制文件本身的内容。

Git Large File Storage (LFS)正是这样做的(由GitHub于2015年4月发布)。

该项目是git-lfs(请参见git-lfs.github.com),并已经在支持它的服务器上进行了测试:lfs-test-server
您可以仅在git repo中存储元数据,而将大文件存储在其他地方。

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

大文件会通过HTTPS单独同步到可配置的Git LFS服务器上,因此您在推送Git存储库时不受限制。
只有在检出大文件时才从服务器同步,因此当不需要时,本地存储库不会承载每个文件的每个版本的重量。
Git中存储的元数据是可扩展的,以备将来使用。目前它包括文件内容的哈希值和文件大小,因此客户端可以在下载时显示进度条或选择不下载大文件。

1
也许我没有理解你的问题,但如果你将所有文件的时间戳存储在文本文件中会怎样呢?然后,你可以只将该文件存储在版本控制中,并让你的版本控制系统(VCS)比较它的不同版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接