我正在阅读Git LFS,并一次又一次地看到它适用于"大文件"
Git大文件存储(LFS)取代了大型文件,如音频样本,视频[...]
版本大文件 - 即使是那些大到几GB的大文件 - 使用Git。
Git大文件存储(LFS)是一个免费的开源扩展,它使用Git中的文本指针替换大文件,并将这些文件的内容存储在远程服务器上。
不幸的是,我什么都没看到"大文件"实际上是。很明显,占用几千兆字节的东西是一个大文件,但是那些更小的东西呢?
我是否会从Git LFS中受益于"大文件"小到50 MB? 20MB? 5MB? 1MB?不到1MB?
"大文件"有多大?与常规Git相比,必须从Git LFS中获益吗?
答案 0 :(得分:6)
没有确切的阈值来定义什么是大文件。这取决于用户。要查看是否需要使用Git LFS存储一些文件,您需要了解git的工作原理。
Git和其他源代码控制工具(perforce,svn)之间最根本的区别在于Git在每次提交时都存储了存储库的完整快照。因此,当您有一个大文件时,快照包含此文件的压缩版本(如果文件未更改,则指向文件blob的指针)。存储库快照存储为.git
文件夹下的图形。因此,如果文件
“大”,存储库大小将迅速增长。
有多个标准可以确定是否使用Git LFS存储文件。
文件的大小。 IMO如果文件超过10 MB,您应该考虑将其存储在Git LFS
文件修改的频率。应经常使用Git LFS存储大文件(基于大文件的用户直觉)
文件的类型。无法合并的非文本文件可用于Git LFS存储
我可以从Git LFS中获得小到50 MB的“大文件”吗? 20MB? 5MB? 1MB?不到1MB?
根据文件更改的频率,提及的任何大小都可以获益。 考虑每次执行100次提交编辑文件的情况。对于可以压缩的20MB文件(例如15 MB),如果不使用Git LFS存储文件,则存储库大小将增加大约1.5GB。
答案 1 :(得分:-2)
LFS是一种维护项目资源的工具。假设您有一个项目,其中包含前端使用的*.psd
个文件。这些文件通常很大,文件的版本控制与先前版本无关(git保存了提交中文本文件的更改历史记录,但对于二进制文件,这种方法无法使用。diff
两个.cpp
}文件有意义,但两张原始照片的diff
没有。)。因此,如果您将资源放入存储库,其 size 并且克隆时间将会变得难看。而且维护很难。
如何克服这个问题?首先,一个好主意是从服务器端的代码中拆分大文件的数据库。另一个是客户允许他们想要在他/她的本地机器上使用他们想要使用的部分(即不是所有以前的文件)。
LFS做什么?它将其跟踪的文件和存储主题作为指向原始文件的指针。将原始文件存储到服务器端的单独数据库。本地存储库在其历史记录中包含所有指针,但是当您签出特定提交时,它只会提取其内容。以这种方式,本地存储库的大小和克隆时间将大大减少。
PS :lfs
中接收文件的方法与git
不同。所以我认为它使用一些技术来分割大文件,将它们发送到不同的并行连接并合并它们......以及可以改善其功能的东西...但重要的是它可以为一百/几千个小文件增加克隆/拉取的时间。
另请注意,git在Windows中大于4GB
的文件存在问题。