git lfs 的优势是什么?
What is the advantage of git lfs?
Github 有一个 limit on push large file. So if you want to push a large file to your repo, you have to use Git LFS。
我知道在 git 存储库中添加二进制文件是个坏主意。但是如果我在我的服务器上使用 gitlab 并且回购协议中的文件大小没有限制,并且我不关心我的服务器上的回购协议大小是否超大。在这种情况下,git lfs 的优势是什么?git clone
或 git checkout
会更快?
与集中式系统相比,Git(和其他分布式系统)的一个特殊性是每个存储库都包含项目的整个历史。假设您创建了一个 100 MB 的文件,以压缩效果不佳的方式对其进行了 100 次修改。您最终会得到一个 10 GB 的存储库。这意味着每个克隆将下载 10 GB 的数据,在您进行克隆的每台计算机上占用 10 GB 的磁盘 space。更令人沮丧的是:即使您 git rm
大文件,您仍然必须下载这 10 GB 的数据。
将大文件放在单独的系统中,如 git-lfs 允许您仅存储指向存储库中文件的每个版本的指针,因此每个克隆只会为每个修订下载一小段数据.结帐将仅下载您正在使用的版本,即上例中的 100 MB。因此,您将在服务器上使用磁盘 space,但会在客户端上节省大量带宽和磁盘 space。
除此之外,git gc
(内部,git repack
)使用的算法并不总是适用于大文件。 Git 的最新版本在这方面取得了进展,它应该工作得相当好,但是使用一个包含大文件的大存储库最终可能会给你带来麻烦(比如没有足够的 RAM 来重新打包你的存储库)。
Github 有一个 limit on push large file. So if you want to push a large file to your repo, you have to use Git LFS。
我知道在 git 存储库中添加二进制文件是个坏主意。但是如果我在我的服务器上使用 gitlab 并且回购协议中的文件大小没有限制,并且我不关心我的服务器上的回购协议大小是否超大。在这种情况下,git lfs 的优势是什么?git clone
或 git checkout
会更快?
与集中式系统相比,Git(和其他分布式系统)的一个特殊性是每个存储库都包含项目的整个历史。假设您创建了一个 100 MB 的文件,以压缩效果不佳的方式对其进行了 100 次修改。您最终会得到一个 10 GB 的存储库。这意味着每个克隆将下载 10 GB 的数据,在您进行克隆的每台计算机上占用 10 GB 的磁盘 space。更令人沮丧的是:即使您 git rm
大文件,您仍然必须下载这 10 GB 的数据。
将大文件放在单独的系统中,如 git-lfs 允许您仅存储指向存储库中文件的每个版本的指针,因此每个克隆只会为每个修订下载一小段数据.结帐将仅下载您正在使用的版本,即上例中的 100 MB。因此,您将在服务器上使用磁盘 space,但会在客户端上节省大量带宽和磁盘 space。
除此之外,git gc
(内部,git repack
)使用的算法并不总是适用于大文件。 Git 的最新版本在这方面取得了进展,它应该工作得相当好,但是使用一个包含大文件的大存储库最终可能会给你带来麻烦(比如没有足够的 RAM 来重新打包你的存储库)。