11

这是我的 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显示一切清晰(没有提交/推送/暂存)。

4

3 回答 3

9

这没有记录在ls-files 手册页中,因此我深入研究了源代码以找到答案

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

    return "-"
}

* 可能意味着磁盘上的文件与存储库或索引中的文件大小相同,具体取决于WrappedPointer.Size. 它已在此提交中添加,但未解释。无论哪种方式,这似乎都是一个糟糕的测试,因为内容可以改变但大小不会改变。

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

于 2016-04-12T23:00:44.253 回答
2

页面建议:

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

但我的经历却恰恰相反。

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

于 2020-09-18T15:07:13.867 回答
1

就像在 git 中一样,“-”表示该文件已在工作目录中删除。两个带“-”的文件确实被不小心删除了。恢复它们带回了“*”。

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

于 2016-04-12T22:48:53.310 回答