はじめに
git pull
した際、「error: cannot lock ref 'refs/remotes/origin/main':~」というエラーが発生して失敗しました。再度pullしたところ問題なく最新が取得できたようでしたが、なにか対応が必要かと思い調べてみました。
原因
リモートで削除されたブランチがローカルブランチに残っていることで発生するようです。ただ、そういった状況は普通に起こりそうなので、その上でなにか問題がありそうですが…。(調査中)
解決方法
git remote
コマンドにprune
というオプションを付与して実行すると、リモートで削除済みのローカルブランチが削除できます。
git remote prune origin
以下のコマンドでも同じです。
git fetch --prune
git pull --prune
また、--dry-run
オプションをつけると削除対象のブランチを確認できます。ブランチの削除は行われません。
git remote prune --dry-run origin
git fetch
やgit pull
で--prune
オプションをデフォルトにすることも可能です。
git config remote.origin.prune true
まとめ
git pull
時に「error: cannot lock ref 'refs/remotes/origin/main':~」エラーになってしまった場合の対処について調べてみました。
git remote prune origin
コマンドで、リモートから削除されたローカルブランチを削除するのが有効なようです。
以上