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
) を削除するジョブを作っていた。。