跟踪Git LFS中的包锁文件(例如NPM';s package lock.json)是个好主意吗?

跟踪Git LFS中的包锁文件(例如NPM';s package lock.json)是个好主意吗?,npm,nuget,locking,git-lfs,Npm,Nuget,Locking,Git Lfs,我注意到,在我们的一个项目中,NPM生成的package lock.json文件大小约为550kib。同样,NuGet生成的packages.lock.json文件约为100kib,并且可能会增长 我对保持Git存储库的紧凑感兴趣,所以我想知道:因为这些文件经常更改并且相对较大,所以在Git LFS中跟踪它们有意义吗? 我意识到,如果在Git LFS中跟踪更改,Git将无法自动合并更改,但通常来说,锁文件不容易重新生成吗?锁文件很容易重新生成。这并不意味着你应该重新生成它们。包锁将告诉您在该提交

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

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


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

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

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


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

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

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

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