少し前から困っていたのですが(書こうと思って忘れていた)、公式からもブログが出ていたので、ご紹介。
発生条件
- オンプレミスのAzure DevOps (Team Foundation) ServerでNTLM認証を使っている(クラウドのServiceには該当しません)
- Git LFS 3.0以降(Git for Windowsでは2.33から3.0.1が含まれる)を使っている
- Git LFSでファイルを管理している
私の場合、まず最初にこのissueの現象に遭遇しました。
Git LFS 3.0以降はgolangで書かれていて、golangの標準ではNTLMサポートしていない(AzureがNTLMのパッケージを出してはいる)ことがそもそもの原因のような?
Remote URLをsshにしてみたのですが、異なるエラーになるだけで、ダメでした。sshだからNTLMの影響を受けないのではと思っていたのですが、どうも違うようです。そして、submoduleがある場合(問題のあるレポジトリでは使っていたので)sshにはpipelineのエージェントに制限があるためあまり使いたくなかったのでした。
LFSで管理していたのは大きくない画像だったので、Git LFSをあきらめて、Git管理にすることで回避しました。
git lfs ls-files git lfs untrack '*.png' '*.jpg' git rm --cached ファイルパス git lfs uninstall
最後にcommit
git add . git commit
履歴からは消さなくてもいいかなということで消していません。リモートから完全に消したい場合、再生成したほうがいいのかな?GitHubではリモートからも消したい場合リポジトリの再生成が必要になるようですね。
Azure DevOps Serverの場合、リモートリポジトリを消してもBoardsの内容は消えないので、この手順で復旧できるはずです。
- リモートをclone
- リモートレポジトリを削除
- 再度リモートを作成
- 新しいremote urlをクライアントに登録
- push