どのタグが現在チェックアウトされているかを見つけるのに問題があります。
私がする時:
git checkout tag1
git branch
どのタグを付けているのかわからないようです。記録のみ:
* (no branch)
master
どのタグがチェックアウトされているかを調べることはできますか?上記の例では、これはtag1
になります。
編集: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などを使用していることを前提としています。
これは私のために働いたgit describe --tags --abbrev=0
現在のHEAD上のすべてのタグを表示(またはコミット)
git tag --points-at HEAD
git describe
は porcelain コマンドであり、避けるべきです:
http://git-blame.blogspot.com/2013/06/checking-current-branch-programatically.html
代わりに、私は使用しました:
git name-rev --tags --name-only $(git rev-parse HEAD)
タグをチェックアウトすると、 "detached head" と呼ばれるものが得られます。通常、GitのHEAD commitは、現在チェックアウトしているブランチへのポインターです。ただし、ローカルブランチ以外(タグやリモートブランチなど)をチェックアウトすると、「切り離されたヘッド」があります。実際にはブランチ上にいるわけではありません。切り離されたヘッドにいる間は、コミットしないでください。
編集を行わない場合は、タグをチェックアウトしてもかまいません。ファイルの内容を調べているだけの場合、またはタグからプロジェクトをビルドする場合は、git checkout my_tag
でファイルを操作できます 'コミットしません。ファイルの変更を開始する場合は、タグに基づいてブランチを作成する必要があります。
$ git checkout -b my_tag_branch my_tag
my_tag_branch
から始まるmy_tag
という新しいブランチを作成します。このブランチで変更をコミットしても安全です。
git log --decorate
これにより、現在チェックアウトされているコミットを指すrefがわかります。