我有一个 Git LFS 存储库,并且在本地我已经提取了所有 LFS 文件。我想检查 LFS 使用的“指针”文件,但我只能看到实际的 LFS 二进制文件。
我在哪里/如何明确地看到 git 中的指针文件,而不是它们指向的二进制文件?
您需要在本地“git lfs pull”,才能看到lfs文件内容。
您可以通过以下方式查看指针文件的内容:
$ git cat-file -p :path/to/myfile.a
规格非常清晰而且非常小。我不知道所有细节,但我的理解如下:
使用 git-lfs 时,它会创建一个文件夹
.git/lfs
,其中将下载大量文件(可以在 $ git lfs env
的输出中看到)。这些文件不会与 git 历史记录一起保存,而是单独保存(例如在 https://git-lfs.github.com 中)。什么 git 版本是指向这些文件的指针,如下所示:
version https://git-lfs.github.com/spec/v1
oid sha256:907b5c652cce59e009e3c7fb2dc92d3bf598251315bed741aee037f2046bd32e
size 251222
这是我的存储库中文件指针的内容(比如
path/to/myfile.a
),我用以下命令显示了它:
$ git cat-file -p :path/to/myfile.a
请注意,
path/to/myfile.a
是相对于存储库的根目录的。
从上面的
oid
中,我们可以找到通过git-lfs下载到.git/lfs
中的文件,在我的例子中它在这里:
.git/lfs/objects/90/7b/907b5c652cce59e009e3c7fb2dc92d3bf598251315bed741aee037f2046bd32e
现在,如果您只是
git clone
您的存储库并安装了 git-lfs,您将在 path/to/myfile.a
处获得完整文件。但在没有 LFS 的情况下实际克隆存储库很有趣:
$ GIT_LFS_SKIP_SMUDGE=1 git clone <repository>
你会看到现在
myfile.a
是指针文件!
你需要运行:
git lfs install
配置存储库来处理 lfs 文件。 使用后有:
git lfs pull
提取 lfs 文件的内容。
注意:以后,运行 git lfs install 一次后,LFS 文件将自动下拉。
但是每当你遇到问题时,你只会看到:
version https://git-lfs.github.com/spec/v1
oid sha256:80db5c652cce59e569e3c7fb2dc92d3bf598251315bea41aee037f2054bd32e
size 251000
您可以使用
git lfs pull
来获取文件的内容。