Jenkinsのgit fetchでCannot lock refエラーが出た時の対応 | by eiryu | Medium Gitでブランチを作ろうとしたら「fatal: cannot lock ref …」と怒られた - Qiita
Git で feature/foo というブランチがある状態で feature/foo/bar を作ろうとすると
error: Cannot lock ref 'refs/remotes/origin/feature/foo/bar': 'refs/remotes/origin/feature/foo' exists; cannot create 'refs/remotes/origin/feature/foo/bar' といったエラーが出る。
発生手順
- Aが
feature/fooをpushする - Bがpullする
- Aが
feature/fooを消してfeature/foo/barをpushする - Bがpullしようとするときエラーになる
対応
git remote prune をすれば良い
git pull --prune でも良さそう
note/Jenkins で、Jenkinsfileのclone時に発生した場合は Additional Behaviours のところで Prune stale remote-tracking branches を指定するとよい。
自分は知らなかったので、Jenkinsfileがクローンされるディレクトリ( ${JENKINS_HOME}/workspace/path/to/job@script ) を削除するジョブを作っていた。。

