要約
Windows上でgit lfsを利用する場合、junction (mount point)は使えず、ドライブレターを割り当てたパス直接でないとならない。
BoxのようなCloud同期する場所もダメらしい。
不具合詳細
gitでlfsを使うリポジトリ(github, gitlabとリンク)をCドライブに置いていたが、容量が(別の理由で)逼迫してきたので、余っていたパーティションをCドライブの下のディレクトリにマウントする形(WindowsではJUNCTION というらしい)でつなぎ、その中にgit管理しているディレクトリを移動した。
ドライブ文字を与えなかったのは、Linuxのmountみたいなものだと考えて試してみたかったから。問題が起きるとは思っていなかった。
するとpullやbranchの切替を行う度にタイトルに上げたエラーが発生。加えてリポジトリのトップディレクトリにlfs, hooksといった名称のディレクトリが湧いて出るようになった。
エラーのせいでremoteにプッシュも出来ない(lfsエラーで止まる)。
湧いたlfs, hooksは消しても問題ないらしいという情報をネットで得て一旦消すも、branch切り替える度に再度湧き出る。
勿論エラーも解消されない。
さらに検索した結果以下のIssueに到達。
Goのバグらしいが治す予定は無いとgolangチームから言われたそう。
git v2.31でなんとかfix出来るかもとなってますが、
の最後にも報告がある(2021-09-26)ように、治せてないと思われる。
対策
マウントする設定を消して単純にドライブレターを与えたら普通に使えるようになりました。
lfsファイルをコミット後に湧いて出たlfs, hooksといったディレクトリを消したりしたリポジトリは、lfsの実体ファイルが見つからない等の別のエラーに見舞われたので、remoteからクローンしなおしました。
多分、lfsファイルのコミットをして無ければ問題なかったのじゃないかな。
未確認ですが、lfsオブジェクトが無ければjunctionでも問題ないのかも知れない。
システム情報
Windows 10 Enterprise (build 19041.1237)
git version 2.32.0.windows.2
git-lfs/2.13.3 (GitHub; windows amd64; go 1.16.2; git a5e65851)
補足情報
にBoxと同期するディレクトリで同じエラーに見舞われている報告があり、治せないと回答されて強制クローズされているので、そういったCloudストレージと同期するディレクトリも避けたほうが良さそう。