背景
GitHub Actions などで, github.ref で tag を打つ(たとえば artifact を release にアップロードするときとか)ようなスクリプトを書いている.
master branch を push すると refs/heads/master で tag が作られ, 以降手元から git push origin master などすると
error: dst refspec refs/heads/master matches more than one.
となり push できない.
解決方法
git push origin :refs/tags/refs/heads/master で消す.
refs/heads/master がタグ名になっているので, :refs/tags + refs/heads/master とする
(refs/tags/master ではうまく消せない)
その他
githhub actions で, branch or tag 名を見て処理を切り替えるには if を使う
if: contains(github.ref, 'tags/v')
YAML だと, 条件で処理変える文法がわかりづらいですね.