現在チェックアウトされているタグを見つけるのに苦労しています。
私がする時:
git checkout tag1
git branch
自分がどのタグにいるのかわからないようです。ログのみ:
* (no branch)
master
どのタグがチェックアウトされているかを調べることはできますか? 上記の例では、これは になりますtag1
。
現在チェックアウトされているタグを見つけるのに苦労しています。
私がする時:
git checkout tag1
git branch
自分がどのタグにいるのかわからないようです。ログのみ:
* (no branch)
master
どのタグがチェックアウトされているかを調べることはできますか? 上記の例では、これは になりますtag1
。
編集: 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 などを使用していることを前提としています。
これは私のために働いたgit describe --tags --abbrev=0
編集 2020: 以下のコメントのいくつかで言及されているように、これはうまくいくかもしれないし、うまくいかないかもしれないので、注意してください!
現在の HEAD (またはコミット) のすべてのタグを表示します
git tag --points-at HEAD
タグをチェックアウトすると、 「切り離されたヘッド」と呼ばれるものがあります。通常、Git の HEAD コミットは、現在チェックアウトしているブランチへのポインターです。ただし、ローカル ブランチ以外のもの (タグやリモート ブランチなど) をチェックアウトすると、「切り離されたヘッド」が発生します。つまり、実際にはどのブランチにも属していません。デタッチド ヘッドでコミットを行うべきではありません。
編集したくない場合は、タグをチェックアウトしても問題ありません。ファイルの内容を調べているだけの場合、またはタグからプロジェクトをビルドしたい場合は、コミットを行わない限りgit checkout my_tag
、ファイルを操作しても問題ありません。ファイルの変更を開始する場合は、次のタグに基づいてブランチを作成する必要があります。
$ git checkout -b my_tag_branch my_tag
my_tag_branch
から始まるという新しいブランチを作成しますmy_tag
。このブランチで変更をコミットしても安全です。
git log --decorate
これにより、現在チェックアウトされているコミットを指している参照がわかります。