web-dev-qa-db-ja.com

どのgitタグを使用しているかを表示しますか?

どのタグが現在チェックアウトされているかを見つけるのに問題があります。

私がする時:

git checkout tag1
git branch

どのタグを付けているのかわからないようです。記録のみ:

* (no branch)
master

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

185
grm

編集:JakubNarę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などを使用していることを前提としています。

276
bstpierre

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

54
M K

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

git tag --points-at HEAD
33
George Pavelka

git describeporcelain コマンドであり、避けるべきです:

http://git-blame.blogspot.com/2013/06/checking-current-branch-programatically.html

代わりに、私は使用しました:

git name-rev --tags --name-only $(git rev-parse HEAD)
22
Greg

タグをチェックアウトすると、 "detached head" と呼ばれるものが得られます。通常、GitのHEAD commitは、現在チェックアウトしているブランチへのポインターです。ただし、ローカルブランチ以外(タグやリモートブランチなど)をチェックアウトすると、「切り離されたヘッド」があります。実際にはブランチ上にいるわけではありません。切り離されたヘッドにいる間は、コミットしないでください。

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

$ git checkout -b my_tag_branch my_tag

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

21
mipadi

git log --decorate

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

7
chriswatrous