コマンドを入力すると:
git tag -l
私はそのような結果を得る:
rc-0.9.0.0
rc-0.9.0.1
rc-0.9.0.10
rc-0.9.0.11
rc-0.9.0.12
rc-0.9.0.2
rc-0.9.0.3
rc-0.9.0.4
rc-0.9.0.5
rc-0.9.0.6
rc-0.9.0.7
rc-0.9.0.8
rc-0.9.0.9
これの代わりに私が欲しい:
rc-0.9.0.0
rc-0.9.0.1
rc-0.9.0.2
rc-0.9.0.3
rc-0.9.0.4
rc-0.9.0.5
rc-0.9.0.6
rc-0.9.0.7
rc-0.9.0.8
rc-0.9.0.9
rc-0.9.0.10
rc-0.9.0.11
rc-0.9.0.12
そのような結果を得るために現在のリストをソートする方法は?
バージョンの並べ替えを使用する
git tag -l | sort -V
またはgitバージョン> = 2.0の場合
git tag -l --sort=v:refname
git tag -l --sort=-v:refname # reverse
これによると answer 、サポートしていないプラットフォームではsort -V
WindowsやOSXのように、使用できます
git tag -l | sort -n -t. -k1,1 -k2,2 -k3,3 -k4,4
すでにここに答えを組み合わせます:
git -c 'versionsort.suffix=-' tag --list --sort=-v:refname
suffix=-
は2.0-rc
「後」に来る2.0
--sort=-
は、最上位に最大のバージョン番号を付けます。git -c 'versionsort.suffix=-' ls-remote -t --exit-code --refs --sort=-v:refname "$repo_url" \
| sed -E 's/^[[:xdigit:]]+[[:space:]]+refs\/tags\/(.+)/\1/g'
これの利点は、リモートからオブジェクトがダウンロードされないことです。
詳細については、 この回答 を参照してください。
sort -V
アプローチで逆ソートを取得するには:
git tag -l | sort -V --reverse
このタスクを簡素化するために、単純なシェルスクリプトを作成することになりました。
#!/usr/bin/env bash
TAGS=$(git tag)
CODE=$?
if [ $CODE = 0 ]; then
echo "$TAGS" | sort -V
fi
exit $CODE
それをgit-tags
として$PATH
として保存し、タグをリストする必要があるときはいつでもgit tags
を実行します。
Adapt このPerlスクリプト 。client_release/7.2/7.2.25
のようなタグを特定のタグ付けスキームにソートします。