"large file" 需要多大才能受益于 Git LFS?
How large does a "large file" have to be to benefit from Git LFS?
我正在阅读有关 Git LFS 的文章,并一次又一次地看到它对“大文件”非常有效
Git Large File Storage (LFS) replaces large files such as audio samples, videos[...]
Version large files—even those as large as a couple GB in size—with Git.
Git Large File Storage (LFS) is a free, open-source extension that replaces large files with text pointers inside Git and stores the contents of those files on a remote server.
不幸的是,我在任何地方都看不到“大文件”到底是什么。几千兆字节的文件很明显是一个大文件,但是更小的文件呢?
我是否可以从 Git LFS 中受益,“大文件”小至 50 MB? 20MB? 5MB? 1MB?小于 1MB?
与常规 Git 相比,“大文件”需要多大才能受益于 Git LFS?
LFS是一个维护项目资源的工具。假设您有一个项目,其中有 *.psd
个在 Front-end 中使用的文件。这些文件通常很大,并且文件的版本控制与以前的版本不符(git 在提交中保存文本文件的更改历史记录,但对于二进制文件不能使用这种方法。diff
两个.cpp
文件有意义,但两张原始照片的 diff
没有意义。)。因此,如果您将资源放入存储库,其 size 和克隆 time 的增长将很难看。而且维护起来会很麻烦
如何克服这个问题?首先,一个好主意是将大文件数据库从 server-side 中的代码中分离出来。另一个是客户端允许提取他们当前想要在 his/her 本地计算机上使用的部分文件(即不是所有以前的文件)。
LFS 有什么作用?它散列其跟踪的文件并将主题存储为指向原始文件的指针。将原始文件存储到 server-side 上的单独数据库。本地存储库在其历史记录中包含所有指针,但是当您签出特定提交时,它只会提取其内容。本地存储库的大小和克隆的时间将以这种方式显着减少。
PS: lfs
接收文件的方法不同于git
。所以我 认为 它使用一些技术来拆分大文件,将它们发送到不同的并行连接并合并它们......以及可以改善其功能的东西......但重要的是是它可以增加 clone/pull 的时间 hundred/thousands of small files.
另请注意,git 对于 windows 中大于 4GB
的文件有问题。
没有定义什么是大文件的确切阈值。这取决于用户。要查看是否需要使用 Git LFS 存储一些文件,您需要了解 git 的工作原理。
Git 和其他源代码控制工具(perforce、svn)之间最根本的区别是 Git 在每次提交时存储存储库的完整快照。因此,当您有一个大文件时,快照包含此文件的压缩版本(如果文件未更改,则包含指向文件 blob 的指针)。存储库快照作为图表存储在 .git
文件夹下。因此如果文件
是 "large",存储库大小将快速增长。
有多个标准来确定是否使用 Git LFS 存储文件。
文件的大小。 IMO 如果文件超过 10 MB,您应该考虑将其存储在 Git LFS
文件的修改频率。经常更改的大文件(基于用户对大文件的直觉)应该使用 Git LFS
存储
文件的类型。无法合并的 non-text 文件适用于 Git LFS 存储
Will I benefit from Git LFS with "large files" as small as 50 MB? 20MB? 5MB? 1MB? Less than 1MB?
根据文件更改的频率,上述任何大小都可以让您受益。
考虑您每次都对文件进行 100 次提交编辑的情况。对于可以压缩到 15 MB 的 20MB 文件,如果不使用 Git LFS 存储文件,存储库大小将增加大约 1.5GB。
我正在阅读有关 Git LFS 的文章,并一次又一次地看到它对“大文件”非常有效
Git Large File Storage (LFS) replaces large files such as audio samples, videos[...]
Version large files—even those as large as a couple GB in size—with Git.
Git Large File Storage (LFS) is a free, open-source extension that replaces large files with text pointers inside Git and stores the contents of those files on a remote server.
不幸的是,我在任何地方都看不到“大文件”到底是什么。几千兆字节的文件很明显是一个大文件,但是更小的文件呢?
我是否可以从 Git LFS 中受益,“大文件”小至 50 MB? 20MB? 5MB? 1MB?小于 1MB?
与常规 Git 相比,“大文件”需要多大才能受益于 Git LFS?
LFS是一个维护项目资源的工具。假设您有一个项目,其中有 *.psd
个在 Front-end 中使用的文件。这些文件通常很大,并且文件的版本控制与以前的版本不符(git 在提交中保存文本文件的更改历史记录,但对于二进制文件不能使用这种方法。diff
两个.cpp
文件有意义,但两张原始照片的 diff
没有意义。)。因此,如果您将资源放入存储库,其 size 和克隆 time 的增长将很难看。而且维护起来会很麻烦
如何克服这个问题?首先,一个好主意是将大文件数据库从 server-side 中的代码中分离出来。另一个是客户端允许提取他们当前想要在 his/her 本地计算机上使用的部分文件(即不是所有以前的文件)。
LFS 有什么作用?它散列其跟踪的文件并将主题存储为指向原始文件的指针。将原始文件存储到 server-side 上的单独数据库。本地存储库在其历史记录中包含所有指针,但是当您签出特定提交时,它只会提取其内容。本地存储库的大小和克隆的时间将以这种方式显着减少。
PS: lfs
接收文件的方法不同于git
。所以我 认为 它使用一些技术来拆分大文件,将它们发送到不同的并行连接并合并它们......以及可以改善其功能的东西......但重要的是是它可以增加 clone/pull 的时间 hundred/thousands of small files.
另请注意,git 对于 windows 中大于 4GB
的文件有问题。
没有定义什么是大文件的确切阈值。这取决于用户。要查看是否需要使用 Git LFS 存储一些文件,您需要了解 git 的工作原理。
Git 和其他源代码控制工具(perforce、svn)之间最根本的区别是 Git 在每次提交时存储存储库的完整快照。因此,当您有一个大文件时,快照包含此文件的压缩版本(如果文件未更改,则包含指向文件 blob 的指针)。存储库快照作为图表存储在 .git
文件夹下。因此如果文件
是 "large",存储库大小将快速增长。
有多个标准来确定是否使用 Git LFS 存储文件。
文件的大小。 IMO 如果文件超过 10 MB,您应该考虑将其存储在 Git LFS
文件的修改频率。经常更改的大文件(基于用户对大文件的直觉)应该使用 Git LFS
存储
文件的类型。无法合并的 non-text 文件适用于 Git LFS 存储
Will I benefit from Git LFS with "large files" as small as 50 MB? 20MB? 5MB? 1MB? Less than 1MB?
根据文件更改的频率,上述任何大小都可以让您受益。 考虑您每次都对文件进行 100 次提交编辑的情况。对于可以压缩到 15 MB 的 20MB 文件,如果不使用 Git LFS 存储文件,存储库大小将增加大约 1.5GB。