git-lfs-ls文件:星号(*)与短划线(-)



这是我列出的git-lfs托管文件

$ git lfs ls-files

b1d5dd29dd - file1.zip
27d3073f43 - file2.zip
fb4e699c05 * file3.zip

为什么一个文件旁边有星号/星号(*),而其他文件旁边有短划线(-)

git-lfs-wiki似乎表明(*)是预期的。

https://github.com/github/git-lfs/wiki/Tutorial

git lfs status显示全部清除(没有要提交/推送/暂存的内容)。

ls文件手册页中没有记录这一点,所以我深入研究了源代码以找到答案。

func lsFilesMarker(p *lfs.WrappedPointer) string {
    info, err := os.Stat(p.Name)
    if err == nil && info.Size() == p.Size {
        return "*"
    }
    return "-"
}

*可能意味着磁盘上的文件与存储库或索引中的文件大小相同,这取决于WrappedPointer.Size中的内容。此提交中添加了它,但未对此进行解释。不管怎样,这似乎是一个糟糕的测试,因为内容可以改变,但大小不能改变。

请注意,-代码路径从未经过测试。您可能希望让他们知道缺少测试和文档。

本页建议:

OID后面的星号(*)表示LFS指针,减号(-)表示完整对象。

但我的经历恰恰相反。

对我来说,减号(-)表示指针,星号(*)表示git-lfs中真正的大文件。

就像git中一样,'-'表示文件已在工作目录中删除。带有"-"的两个文件确实被无意中删除了。恢复它们会带回"*"。

让我失望的是git lfs status什么都没报告,但我想我的解释错了。

最新更新