266

現在チェックアウトされているタグを見つけるのに苦労しています。

私がする時:

git checkout tag1
git branch

自分がどのタグにいるのかわからないようです。ログのみ:

* (no branch)
master

どのタグがチェックアウトされているかを調べることはできますか? 上記の例では、これは になりますtag1

4

6 に答える 6

406

編集: Jakub Narębski には、より多くの git-fu があります。次のはるかに単純なコマンドは完全に機能します。

git describe --tags

(または--tags、注釈付きタグをチェックアウトした場合はなしで。私のタグは軽量なので、--tags が必要です。)

元の答えは次のとおりです。

git describe --exact-match --tags $(git log -n1 --pretty='%h')

より多くの git-fu を持っている人は、よりエレガントなソリューションを持っているかもしれません...

git-logこれは、がチェックアウトしたものから始まるログを報告するという事実を利用しています。%h省略されたハッシュを出力します。次にgit describe --exact-match --tags、そのコミットと完全に一致するタグ (軽量または注釈付き) を見つけます。

上記の$()構文は、bash などを使用していることを前提としています。

于 2010-08-04T11:54:22.127 に答える
100

これは私のために働いたgit describe --tags --abbrev=0

編集 2020: 以下のコメントのいくつかで言及されているように、これはうまくいくかもしれないし、うまくいかないかもしれないので、注意してください!

于 2015-11-11T12:13:46.850 に答える
86

現在の HEAD (またはコミット) のすべてのタグを表示します

git tag --points-at HEAD
于 2016-05-28T09:47:25.227 に答える
25

タグをチェックアウトすると、 「切り離されたヘッド」と呼ばれるものがあります。通常、Git の HEAD コミットは、現在チェックアウトしているブランチへのポインターです。ただし、ローカル ブランチ以外のもの (タグやリモート ブランチなど) をチェックアウトすると、「切り離されたヘッド」が発生します。つまり、実際にはどのブランチにも属していません。デタッチド ヘッドでコミットを行うべきではありません。

編集したくない場合は、タグをチェックアウトしても問題ありません。ファイルの内容を調べているだけの場合、またはタグからプロジェクトをビルドしたい場合は、コミットを行わない限りgit checkout my_tag、ファイルを操作しても問題ありません。ファイルの変更を開始する場合は、次のタグに基づいてブランチを作成する必要があります。

$ git checkout -b my_tag_branch my_tag

my_tag_branchから始まるという新しいブランチを作成しますmy_tag。このブランチで変更をコミットしても安全です。

于 2010-08-04T11:52:44.970 に答える
12

git log --decorate

これにより、現在チェックアウトされているコミットを指している参照がわかります。

于 2014-11-25T22:19:37.390 に答える