web-dev-qa-db-ja.com

gitの現在のブランチ/タグ名を取得する

作業コピーの現在のブランチ名またはタグ名を取得するにはどうすればよいですか? rev-parse --abbrev-ref HEADがブランチ名を与えることを示す参照を見たことがありますが、チェックアウトがタグの場合、これは機能しません。その場合、「HEAD」が返されます。どういうわけか、これらのリビジョンのタグ名を取得する必要があります。

明確にするために、2つの可能な名前のいずれかが必要です。

  1. 現在のチェックアウトがブランチのHEAD)である場合、ブランチ名が必要です
  2. 分離されたHEADの場合、タグ名が必要です(タグがあることを前提としています)
22

私はあなたがこれが欲しいと思います:

git symbolic-ref -q --short HEAD || git describe --tags --exact-match

デタッチされていない場合はHEADの値が出力され、完全に一致している場合はタグ名が出力されます。それ以外の場合はエラーが表示されます。

60

このコマンドは、次の優先順位で名前を出力できます:tag> branch> commit

git describe --tags --exact-match 2> /dev/null \
  || git symbolic-ref -q --short HEAD \
  || git rev-parse --short HEAD
7
Xiaohui Zhang