git - 如何将 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,需要多步骤脚本来执行单一概念操作。
解决方案
将 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
您可以将输出重定向到文件中。
推荐阅读
- go - 如何模拟客户端和服务器之间的完全网络丢失?
- javascript - 未捕获的 ReferenceError:未定义要求。Visual Studio 中的 Node.js
- reporting-services - ssrs - 嵌入 html id、名称或以其他方式标识表或元素
- php - Cron 作业不会运行身份验证调用
- javascript - jQuery UI Tooltip 绑定特殊事件
- regex - VBScript RegEx - 单词之间的匹配
- php - 如何使用正则表达式处理长文本?
- python - 通过python获取分割wav音频文件中的频率值(hz)
- c++ - 如何正确使用 intptr 将 char* 值从 c++ DLL 返回到 Vb.net
- windows - 从 Ubuntu VM 访问主机 url