首页 > 解决方案 > 在 Git LFS 中跟踪包锁定文件(例如 NPM 的 package-lock.json)是一个好主意吗?

问题描述

我注意到package-lock.json我们的一个项目中 NPM 生成的文件大小约为 550 KiB。同样,packages.lock.jsonNuGet 生成的文件约为 100 KiB,并且可能会增长。

我对保持我们的 Git 存储库紧凑感兴趣,所以我想知道:由于这些文件经常更改并且相对较大,在 Git LFS 中跟踪它们是否有意义?

我意识到如果在 Git LFS 中跟踪更改,Git 将无法自动合并更改,但一般来说,锁定文件不是很容易重新生成吗?

标签: npmnugetlockinggit-lfs

解决方案


锁定文件很容易重新生成。这并不意味着您应该重新生成它们。包锁将告诉您在该提交中使用了每个依赖项的确切版本。这可以让其他贡献者(和您自己)使用完全相同的依赖项重建您的项目,从而避免在更新的依赖项引入错误时带来很多麻烦。您应该将 package-lock 视为项目的配置文件并将其保存在代码中。

至于将其保存在 git lfs 上,请知道虽然包锁定文件确实经常更改,但它们的内容是像代码一样格式化的纯文本,这正是 git 为存储/检索而优化的内容类型。例如,git 不会单独存储每个文件,而是可以跨提交重用的包锁块。

总而言之,我不会太担心 package-lock 对你的 repo 的性能影响。当然,会有一些,但它是一个重要的配置文件,提交它的好处大于缺点。这样想:如果你的项目有很多代码,这会影响你的 git repo 性能吗?是的。这是否意味着您不应该提交该代码?当然不是——这就是使用 git 的全部意义所在。


推荐阅读