読者です 読者をやめる 読者になる 読者になる

Git の annotated tag を lightweight tag に変換する

grep 'refs/tags/.*\^{}$' .git/info/refs | while read line; do
  hash=${line:0:40}
  tag=${line##*/}
  tag=${tag%^*}
  git tag -d $tag
  git tag $tag $hash
  git push origin :$tag
done
git push --tags

clone 済みのリポジトリでは

git fetch --tags

経緯

古いリポジトリの tag を 1.0 から v1.0 形式に変更したところ

$ git describe
warning: tag '1.0' is really 'v1.0' here
1.0-123-g0123456

みたいな警告がでた。

annotated と lightweight が混在している上に、 大したコメントが付いているわけでもないため、 煩わしいので削除した。