LoginSignup
1
0

More than 5 years have passed since last update.

git-lfsでポインタから実体に戻せなかった

Posted at

git-lfsで、サイズの大きいファイルを管理できるというので試した。実体が通常のリポジトリと違うところに保存されて、通常のリポジトリでは、実体へのアクセス情報が書かれたポインタファイルのみ管理されるようだ。
で、管理されているポインタファイルを実体に戻そうとしたら、戻らなくなった。

やったこと

  1. lfsを使ってみる

    git init
    echo 'hoge' > lfs_test
    echo 'moge' > moge
    git lfs track lfs_test
    git add .
    git commit -m 'test'
    
  2. lfs_testファイルは、実体ではなくポインタであることを確認

     git log -p -1
    
  3. lfsの使用を辞めようとしたが、ポインタのままになってて、変更判定されない

    git lfs untrack lfs_test
    git add -u
    git commit -m 'test2'
    

戻し方?

仕方ないので、一旦削除して、実体をコミットしなおして、まとめた

git rm --cached lfs_test
git commit -m 'test3'
git add .
git commit -m 'test3a'
git rebase -i HEAD\^\^ # fixup でまとめた

調査、検証、マニュアル精査もしてないので、普通の方法があるのかも。
でも、ヘルプにもそれっぽいこと書いてなかったし、戻さないのだろうか。git lfs -h

経緯

なんでこんなことしようと思ったかというと、lfs使ったリポジトリをDockerhubでautobuildしたら、ビルドに失敗した。
lfsに入っているファイルをADDして、そこに入ってるはずのファイルをRUNしようとしてこけてた。ADDは成功してる。
となると、Dockerhubがlfs未対応で、ADDしたのは実体ではなくポインタファイルだと考えられる。検証してもいいけど、面倒なので…

http://stackoverflow.com/questions/33327780/dockerhub-automatic-build-with-github-lfs
https://github.com/docker/hub-feedback/issues/500

実体に戻したら、ビルドに成功した
https://hub.docker.com/r/minanon/archlinux/builds/

残ってる課題

  • lfsの正常な戻し方
  • dockerhubのautobuildでlfsを使用したい
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0