如果没有安装Git LFS会发生什么?

c86crjj0  于 2023-06-28  发布在  Git
关注(0)|答案(1)|浏览(188)

我有一个使用Git LFS的存储库,我需要了解如何指导我的合作开发人员使用它。特别是,我对在没有安装Git LFS的机器上工作时会发生什么感到困惑:我会说,从这样的机器克隆将导致丢失文件(iidoe.exe)。那些存储在LFS中的文件),但通过快速尝试,我在代码树中看到了那些文件。所以我需要一些关于这一点的澄清,以及对于没有安装Git LFS的系统,我可以期待什么样的错误行为。

toiithl6

toiithl61#

当你使用Git LFS时,任何带有filter=lfs属性的文件都被设计为存储在Git LFS中。当文件使用Git LFS存储时,对象中提交的内容是一个指针文件。没有使用Git LFS存储的文件只是普通的Git对象。
如果没有安装Git LFS,并且仓库使用Git LFS,那么当克隆或 checkout LFS文件时,指针文件被写入树中,而不是调用Git LFS来写入大对象。因此,通常情况下,该文件不能与任何应该处理它的软件一起工作,但这在许多环境中是可以接受的选择。
更严重的是,如果一个不使用Git LFS的贡献者签入了一个本该由Git LFS管理的文件,那么他们将把它作为一个普通的Git对象签入。The Git LFS FAQ outlines what happens,但通常情况下,安装了Git LFS的用户通常会看到文件被永久修改,即使是git reset --hard也无法修复。FAQ推荐一种基于CI的方法来防止这些提交被合并:
可以在CI系统中使用命令git lfs fsck --pointers BASE..HEAD(具有适当的BASEHEAD值)来验证没有人引入此类问题。
请注意,这需要Git LFS 3.0.2或更高版本才能正常工作。

相关问题