首页 > 解决方案 > 如何将 Git LFS 文件的旧版本打印到标准输出(LFS 的 git show / git cat-file)?

问题描述

这个问题的另一个标题可能是“如何签出 Git-LFS 托管文件的多个版本?”

我想检查存储在 Git-LFS 中的文件的多个版本。因此,我想在我的工作目录中并排放置该文件的多个版本。我的想法是这样的:

git show v1:./myfile.ipynb > myfile-v1.ipynb
git show v2:./myfile.ipynb > myfile-v2.ipynb

这不能按预期工作:文件由 Git-LFS 管理,因此git show每个版本的内容看起来像

version https://git-lfs.github.com/spec/v1
oid sha256:62aafe00ec8b61a37dd729e7d3a723382...
size 20439

我对文件的“真实”、Git-LFS 管理的内容感兴趣,而不是 LFS 存储在 Git 自己的树中的指针文件。

如何创建未跟踪的自定义命名文件,每个文件都包含 Git-LFS 跟踪的文件的特定版本?这不需要是一个命令,我已经辞职到 Git,需要多步骤脚本来执行单一概念操作。

标签: gitgit-lfs

解决方案


将 lfs 指针插入git lfs smudge将产生您想要的结果。例如:

git cat-file blob <blob-sha> | git lfs smudge

或者,如果您有一个 commit-ish(提交哈希、分支名称、justHEAD等)和文件名:

git cat-file blob <commit-ish>:path/to/my-large-file.name | git lfs smudge

您可以将输出重定向到文件中。


推荐阅读