首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Git LFS文件的旧版本打印到stdout (用于LFS的git显示/git猫文件)?

如何将Git LFS文件的旧版本打印到stdout (用于LFS的git显示/git猫文件)?
EN

Stack Overflow用户
提问于 2018-06-08 12:34:41
回答 3查看 1.8K关注 0票数 10

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

我想检查存储在Git-LFS中的文件的几个版本。因此,我想把这个文件的几个版本并排放在我的工作目录中。我就是这么想的:

代码语言:javascript
复制
git show v1:./myfile.ipynb > myfile-v1.ipynb
git show v2:./myfile.ipynb > myfile-v2.ipynb

这不符合要求:该文件由Git-LFS管理,因此要在每个版本上git show其内容,如下所示

代码语言:javascript
复制
version https://git-lfs.github.com/spec/v1
oid sha256:62aafe00ec8b61a37dd729e7d3a723382...
size 20439

我感兴趣的是文件的“true”,Git管理的内容,而不是LFS存储在Git树中的指针文件。

如何创建未跟踪的、自定义命名的文件,其中每个文件都包含Git-LFS跟踪的文件的特定版本?这不需要是一个单一的命令,我是听天由命的Git需要多步脚本的单一概念行动。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-06 07:18:57

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

代码语言:javascript
复制
git cat-file blob <blob-sha> | git lfs smudge

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

代码语言:javascript
复制
git cat-file blob <commit-ish>:path/to/my-large-file.name | git lfs smudge

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

票数 6
EN

Stack Overflow用户

发布于 2019-02-06 04:15:42

Update@Markonius的回答是正确的方法。

下面是一个基于对LFS存储库进行实验的脚本。我没有详细地研究LFS协议,所以可能有些奇怪的地方,但它适用于我的简单案例。

git-lfs-cat-file

有关详情如下:

  • LFS文件存储在索引中,结构如下: 版本https://git-lfs.github.com/spec/v1样sha256: oid大小nnnnnnnn
  • 实际的LFS对象将在.git/lfs/objects/ab/cd/abcdeffffffffffffff下。
票数 4
EN

Stack Overflow用户

发布于 2018-06-08 12:41:56

上一次我使用LFS时,项目页面上有关于更好的集成的对话,比如编写diff和/或合并工具,这些工具可以通过.gitattributes插入。这似乎不被认为是高优先级的,因为LFS的主要目的是保护大型二进制文件(但我确实遇到了多个情况,要么是我有一个大文本文件,要么是设置LFS跟踪规则的唯一合理方法,它可以为捕获一些较小的文本文件撒出足够大的网络)。我不确定这些工具是否有任何进展,因为我已经有一段时间没看过项目页面了。

如果没有这些东西,就没有一种特别“圆滑”的方法来做你想要的事情。您可以设置两个工作树并签出不同的版本。您可以签出一个版本,重命名它,然后检查另一个版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50760795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档