21

これは、マシンで解析可能な形式で情報を表示するために git show を作成することに関連していますが、コミット ハッシュを取得するために多くの解析を行う必要があるという事実にうんざりしています。

特定の git タグのコミット ハッシュ (およびコミット ハッシュのみ) タグを出力するコマンドを教えてもらえますか? 願っていた

git show mylabel --pretty=format:"%H" --quiet 

私のコミットを印刷するだけです # しかし、それは言う

tag mylabel
Tagger: user <user@x.com>

Some comment

446a52cb4aff90d0626b8232aba8c40235c16245

コミット行だけで 1 行の出力を期待していましたが、最後の行を解析する必要がありますか?

4

5 に答える 5

26

どうですかgit log -1 --format=format:"%H" mylabel

編集:

実際には、より良い解決策は次のとおりです。

git show-ref -s mylabel

警告これは、注釈のないタグに対してのみ機能します。より一般的で安全なコマンドについては、https: //stackoverflow.com/a/1862542/1586965を参照

編集 bis: コメントで述べたように、注釈付きのコミット (それ自体のオブジェクト) には注意してください。より一般的な解決策を得るには、@michas の回答をお読みください。

をすると違いがわかりますgit show-ref -d mylabel


資力:

于 2013-05-29T15:31:57.510 に答える
19

git help rev-parse言います:

   <rev>^{}, e.g. v0.99.8^{}
       A suffix ^ followed by an empty brace pair means the object could be a tag, and dereference the tag recursively until a non-tag object is found.

通常tag^{}、そのコミットを参照するために使用します。

2 種類のタグがあります。

  • 軽量タグは、既存のコミットへの単なるポインターです
  • 注釈付きタグは、別のコミットオブジェクトへのポインターを含む独自のオブジェクトです

git rev-parse tagタグ自体の SHA1 を取得するために使用します。

git rev-parse tag^{}基になるコミットの SHA1 を取得するために使用します。

軽量タグの場合、どちらも同じです。注釈付きタグの場合はそうではありません。

を使用することもできますgit show-ref -d tag。これにより、タグの SHA1 と関連するコミットの SHA1 の両方が表示されます。

git show tag(注釈付き) タグに関する詳細を提供するものもあります。

于 2013-05-29T15:32:50.973 に答える
5

git rev-parse mylabel^{}あなたがしたいことをするべきです。およびその他の演算子のman gitrevisions詳細については、を参照してください。^{}

于 2013-05-29T15:31:50.110 に答える
4
git log <tag or branch> -1 --pretty=%H

-1: 1 つのコミットのみを出力するよう指示します

--pretty=%H: 完全なハッシュのみを出力するよう指示します

于 2016-06-24T21:57:21.253 に答える