Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Git LFSで特定コミット時点のファイルを別名で保存する

git lfs checkout--toオプションが使えそうと思ったけどコンフリクトしていない状態だと使えなかった。
https://github.com/git-lfs/git-lfs/blob/master/docs/man/git-lfs-checkout.1.ronn

❌ダメな例:

$ git lfs checkout --base --to=tmp.png -- file.png
Could not checkout (are you not in the middle of a merge?): Git can't resolve ref: ":1:file.png"

LFSじゃない通常のファイルは git show <commit>:<file> でできる(参考: https://qiita.com/rbtnn/items/394178862e0a053dfb46 )けどLFSのファイルだとポインタの内容が表示されるだけ。

例:

$ git show HEAD:file.png
version https://git-lfs.github.com/spec/v1
oid sha256:hogehogehogehoge
size 1234

git lfs smudgeでポインタ情報から実体にしてくれるので、パイプしてやればいいだけだった。
https://github.com/git-lfs/git-lfs/blob/master/docs/man/git-lfs-smudge.1.ronn

git show HEAD:file.png | git lfs smudge > tmp.png

みたいな感じでお目当てのファイル実体を別名で保存することができた :tada:

pomu0325
ubiregi
iPadを活用したSaaS型POSシステム「Ubiregi (ユビレジ)」を開発・提供しています
https://ubiregi.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away