Git, タグを別名でフェッチする
動機
複数のremoteを設定したリポジトリがある。
$ git remote origin library-a
git fetchのデフォルトだとタグも取得する。ところでタグの名前空間はどこからfetchするかによらず同じだ
$ git tag my_tag $ git fetch library-a # library-aのタグが取得されrefs/tags/*へ $ git tag v1.0 v2.0 v2.1 v2.2 : : my_tag
ノーグッド。わかりにくいし、リモートが多数になると衝突しかねない。タグの名前空間を分けたい。
library-aのタグは library-a/v1.0 とかでアクセスできるようになるといいですね。
方法
git fetchに--no-tagsオプションを付けることでタグを取得しないことができる
$ git fetch --no-tags library-a # タグ以外のものを取得
その後、場所を明示的に指定してタグだけもってくる
$ git fetch --no-tags library-a refs/tags/*:refs/tags/library-a/* # リモートのタグをローカルに転送。その際プレフィクス library-a/ をつける
$ git tag library-a/v1.0 library-a/v2.0 : : my_tag
グッド。