リリースの場合、私は通常v1.1.0のようなタグを付けます。ビルドスクリプトの実行中に、現在のgit情報を含むfwVersion.cファイルを作成しています。現在、ファイルにコミット情報とブランチ情報がありますが、タグを追加したいと思います。
これは可能ですか?
回答:
のドキュメントを確認してくださいgit describe
。特定のコミットに最も近いタグ(つまり、コミットの祖先を指すタグ)を見つけ、そのコミットをタグで説明します。
コミットがタグによって指されているかどうかだけを知りたい場合は、次の出力を確認できます。
git describe --exact-match <commit-id>
git describe --all --exact-match `git rev-parse HEAD`
git describe --tags --abbrev=0 REV
は、タグにジャンクが不要な場合に役立ちます。
git describe --all
(現在チェックアウトされているコミットの場合)、またはgit describe --all <commit>
私が望んでいたすべてのことを常に行っています。
これはどう?
git tag --points-at <commit-id>
それはあなたに与えられたコミットが持っているすべてのタグをあなたに与えます(それに対してgit describe
あなたに1つだけを与えます)、そして子孫コミットのタグを含みません(git tag --contains
そうします)。
この情報はマニュアルにあります
git tag --contains <commit>
私は私が望んでいたものを私に与えるために両方のトップアンサーの組み合わせを見つけました:
git describe --tags --exact-match <commit-id>
これにより、そのコミットと注釈なしのコミットのみに対応するタグが提供されます。タグを見つけたいときや、書式を外す必要がないときに便利です(たとえば、Jenkinsの場合)。
例えば。 $ git describe --tags --exact-match head~2
あなたにあげる:
$ ReleaseBeta
答えのいくつかを統合する:
git tag --contains [<ref>]
そして
git tag --points-at [<ref>]
あるいは単に
git tag
同じように動作し、指定されたrefまたは指定されていない場合は現在のコミットのタグを出力します。
git describe --tags [<ref>]
ここで<ref>
ないタグが関連付けられていない場合、現在のデフォルト値は、128で終了コミット(パターンがあるように思われない)コミットし、コミットに関連付けられたタグを印刷します。
git describe [<ref>]
--tags
注釈付きタグのみを出力すること
を除いて、と同じように動作します。
オプション--contains
をdescribe
指定すると、指定したコミットの祖先に関連付けられているタグが出力されます。例えば
$ git init
Initialized empty Git repository in /tmp/test
$ git commit -m one --allow-empty
[master (root-commit) 7fdfff2] one
$ git commit -m two --allow-empty
[master cd5f8f1] two
$ git tag -am foo foo
$ git tag bar
$ git log --format=oneline
cd5f8f1f4f29eb164f83e224768ccaf37fe170ed (HEAD -> master, tag: foo, tag: bar) two
7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1 one
$ git describe 7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1
fatal: No tags can describe '7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1'.
Try --always, or create some tags.
$ git describe --contains 7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1
bar~1
git describe --tags <commit-id>
注釈なしタグの場合