🐙

Git LFS の設定したけど Push 時にエラーが出るときの対処

2020/09/30に公開1

Push時にこんなエラーが出たときの対処です。

Git LFS試してと出てるのでトラッキングの設定(.gitattributeに追記)をするもののやはりPushしたらエラーになるパターンが多いかと思います。

原因はすでにコミット済みの過去のファイルがLFS扱いになっていないためです。

というわけで過去を改変する必要があります。

こんなときのためのgit lfs migrateコマンドを使います。
https://github.blog/2017-06-27-git-lfs-2-2-0-released/

git lfs migrate info でLFS化に失敗しているファイルが確認できます。

$ git lfs migrate info
migrate: Fetching remote refs: ..., done.
migrate: Sorting commits: ..., done.
migrate: Examining commits: 100% (8/8), done.
*.asset         1.8 GB  59/59 files(s)  100%
*.tif           58 MB     7/7 files(s)  100%
*.disabled      8.8 MB    4/4 files(s)  100%
*.dll           7.5 MB    2/2 files(s)  100%
*.unity         4.0 MB  19/19 files(s)  100%

git lfs migrate importで過去のコミットもLFSとして書き換えてくれます。

$ git lfs migrate import
migrate: Fetching remote refs: ..., done.
migrate: Sorting commits: ..., done.
migrate: Rewriting commits: 100% (8/8), done.
  develop/imposter      9a9f1e6fe7a8db2d0bb392c7aa10b2134a829a4e -> 00cc30d4fc848d90e65b64829a42b4e066e4d5bf
migrate: Updating refs: ..., done.
migrate: checkout: ..., done.

これでPushできるようになるはずです。

もしまだトラッキングしていない(.gitattributeに追記していない)場合は
git lfs migrate import --include="[ファイルパターン]"のように--includeで指定することで同時に行うことができます。

Discussion