git - 如何将 Git LFS 文件的旧版本打印到标准输出(Git show/git cat-file for LFS)?

标签 git git-lfs

这个问题的另一个标题可以是“如何 check out 一个 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 需要多步脚本来执行单一概念操作。

最佳答案

将 lfs 指针通过管道传输到 git lfs smudge 将产生您想要的结果。例如:

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

或者,如果您有一个提交类型(提交哈希、分支名称、HEAD 等)和文件名:

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

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

关于git - 如何将 Git LFS 文件的旧版本打印到标准输出(Git show/git cat-file for LFS)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50760795/

相关文章:

GIT LFS 卡在 filter-process 命令中

git - 如何获取所有 git 提交到 merge 分支的列表?

git - 获取特定提交时特定文件中所做的更改?

ruby-on-rails - 推送到特定 Git 存储库时排除特定文件

Git LFS : Error: failed to push some refs to

使用 Google Cloud Storage 的 Git 大文件存储

git - 不 merge

git - 如果以前的版本已经在 git 中,如何省略 "-f"为 "git add"?

git - 如何手动下载使用Git大文件存储的项目大文件?

git - 如何将 Mercurial 存储库转换为 Git(支持 LFS)?