tag-new
tag-new
では
タグはvX.Y.Z
の様な形で作っているとして
特に指定がない場合は
パッチアップデートなZ
に関してだけインクリメントして
現在のHEADをタグするエイリアスです。
[alias]
tag-new = "!f () {\
if [ \"$1\" = \"-v\" ];then \
tag=\"$2\";\
shift;shift;\
else \
tag=v$(git tag|sed s/v//g|sort -t . -n -k1,1 -k2,2 -k3,3|tail -n1);\
tag_minor=${tag##*.};\
((tag_minor++));\
tag=${tag%.*}.${tag_minor};\
fi;\
if [ $# -ne 0 ];then \
comment=\"$*\";\
else \
comment=\"$(git log -1|tail -n +5)\";\
fi;\
echo comment: $comment;\
tagcheck=$(git tag|grep ${tag});\
if [ \"$tagcheck\" != \"\" ];then \
echo \"tag: ${tag} exists\"\
echo \"Please check tag or use tag-renew.\"\
return 1;\
fi;\
git tag -a ${tag} -m \"${comment}\";\
git push --tag;\
};f"
これを使って
$ git tag-new
とすれば現在居るレポジトリの最新タグがv1.2.3
だったら
v1.2.4
という新しいタグを作ってpush
します。
その際のコメントは一番最後のコミットのコメントがそのまま入ります。
コメントを指定したい場合にはコマンドの後に続いて書けばそれがそのままコメントになります。
$ git tag-new "Comment for tag"
メジャーバージョン(X
)やマイナーバージョン(Y
)を変更したい場合は
-v
オプションでバージョンを指定します。
$ git tag-new -v v2.3.4 "Comment for tag"
Gitのエイリアスに関しては以下を参照。
tag-renew
tag-renew
では最新のタグを一度削除して現在のHEADで書き換えるエイリアスです。
[alias]
tag-renew = "!f () {\
if [ \"$1\" = \"-v\" ];then \
tag=\"$2\";\
shift;shift;\
else \
tag=v$(git tag|sed s/v//g|sort -t . -n -k1,1 -k2,2 -k3,3|tail -n1);\
fi;\
if [ $# -ne 0 ];then \
comment=\"$*\";\
else \
comment=\"$(git log -1|tail -n +5)\";\
fi;\
tagcheck=$(git tag|grep ${tag});\
if [ \"$tagcheck\" != \"\" ];then \
git tag -d ${tag};\
git push origin :${tag};\
fi;\
git tag -a ${tag} -m \"${comment}\";\
git push --tag;\
};f"
基本的な使い方はtag-new
と一緒で
もし最新以外の特定のタグを書き換えたい場合は-v
でバージョン指定、
コメントも最後のコミットのメッセージがデフォルトで使われますが
指定したい場合は引数に書きます。
$ git tag-renew "Comment for renew tag"
過去のタグを書き換えるのは余り意味が無いので
こちらは-v
は使うことは通常は無いですが。
Sponsored Links