80

次の行で:

$ git tag -n1
v1.8        Tagged the day before yesterday
v1.9        Tagged yesterday
v2.0        Tagged today
$ git describe
v1.9-500-ga6a8c67
$ 

「gitdescribe」でv2.0タグが使用されない理由と、これを修正する方法を誰かが説明できますか?v2.0タグはすでにプッシュされているので、削除して再度追加することはできないと思います。

4

4 に答える 4

103

git describeデフォルトでは、注釈付きタグのみを使用します。--tags軽量タグも使用するようにオプションを指定します。

正しいコミット(git rev-parse HEAD)をチェックアウトしたことを確認してください。注釈付きタグは。で作成されgit tag -aます。そうしてコミットのみが表示される場合git show <tagname>、それは軽量タグです。追加のタグメッセージが表示された場合、それは注釈付きのタグです。

于 2010-11-11T12:48:28.963 に答える
26

これが私たちに起こったとき、それは同じコミットに適用された2つのタグの場合でした。これが当てはまるかどうかは、

# git log --oneline --decorate=short
deba4b4 (tag: v1.1.0.20.0, tag: v1.1.0.19.0) 001 New buildnumber

ここには2つのタグがあります。1つはバージョン19用で、もう1つは20用です。20は19の後にタグ付けされましたが、同じコミット用です。この場合、返される説明

# git describe --tags
v1.1.0.19.0

なぜこれが行われたのかはわかりませんが、これが重複タグで機能するように見えます。

これが発生する可能性のある別のケースは、ブランチ内でより「近い」タグがある場合です。そのケースは、このブログ投稿で説明されています。

于 2012-01-11T10:53:29.760 に答える
24

問題は、現在のブランチで使用可能なコミットでのみタグを使用しているのに対し、すべてのブランチのすべてのgit tagタグを表示することです。git describe

ここに例があります(私が実際にここに来た理由):

 $ git tag | tail -n3
v0.4.0
v0.4.1
v0.4.2

利用可能な最新のタグがであることが示されていますがv0.4.2、これは私の出力ですgit describe

 $ git describe --tags
v0.4.0-2-acd334c

私はブランチを開発しています。ログを調べると、実際に最新のタグが現在のブランチで利用できないことがわかります。

 $ git log --oneline --decorate=short | grep 'tag\:' | head -n3
acd334c (tag: v0.4.0) Merge pull request #1061
988fe5e (tag: v0.3.6) Merge pull request #859
5f97274 (tag: v0.3.5) Merge pull request #646

そのため、私の場合、開発者はリリースにタグを付けるためだけに新しいリリースブランチを作成することにしました。その結果、開発ブランチはタグで最新ではなくなりました。

それがお役に立てば幸いです。ログをチェックするアイデアを@eisに感謝します。

于 2016-09-21T08:59:36.587 に答える
2

おそらくあなたの例v1.9から、マージコミットからのタグです。

デフォルトではgitの動作が予想されます。詳細については、 https ://git.kernel.org/pub/scm/git/git.git/commit/?id=80dbae03をご覧ください。

現在のブランチで最新のものを探すときにマージタグを無視するには、--first-parentオプションを使用できます。

git describe --tags --first-parent --abbrev=0

-最初の親

マージコミットを確認したら、最初の親コミットのみを実行します。これは、ターゲットコミットの履歴でマージされたブランチのタグを一致させたくない場合に役立ちます。

参照:https ://git-scm.com/docs/git-describe

于 2020-02-06T18:40:12.457 に答える