2012-01-09 6 views

答えて

90

これはいかがですか? SHA1は、REFの任意の並べ替えで呼ば取得するには

git show-ref --tags 
+5

これは軽量タグと注釈付きタグを区別しません。軽量タグの場合はコミットが表示され、注釈付きタグの場合はタグオブジェクト自体のハッシュが表示されます。 –

+12

逆参照付きタグリスト(注釈付きタグの場合)を表示するには 'git show-ref --tags -d'を使います。省略されたタグは '^ {}'で後置されます。 –

3

タグには署名および/またはメッセージが必要です。軽量タグにはSHA1オブジェクトはなく、単なるrefsです。それ以外の場合はgit showを試してください。

+1

'git show tag1' ' git show tag2'がうまくいきます。ありがとう:) –

7

(ブランチ、タグ...)git rev-parseを使用します。

git rev-parse tag1^0 tag2^0 

それは別の行に、唯一のフルSHA1sを印刷します。 ^0接尾辞は、注釈付きであろうとなかろうと、タグが指しているコミットのSHA1を確実に出力するための特別な構文です。 (注釈付きのタグは、独自のオブジェクトで、メタデータと共にコミットへのポインタが含まれています。タグが注釈されていて、タグのSHA1が必要な場合は、^0のままにしてください)。

もちろん、 SHA1を受け入れるGitコマンドでもタグを受け付ける必要があるので、これを行う必要はほとんどありません!

+0

最高の答えは、ここにありがとう@Jefromi。 Windowsのcmdシェルで^を使用しているgitコマンドを引用符で囲む必要があることに注意してください。 git rev-parse "tag1^0" "tag2^0" – yoyo

8

私も同様の質問がありましたが、(いくつかの)特定のタグのハッシュが必要でした。私は「ショー-refは、」タグのリストを取ることがわかったので、これは仕事をしていません:

% git show-ref v3.4.0.13-ga v3.4.0.13-base 
bfc7747c4cf67a4aacc71d7a40337d2c3f73a886 refs/tags/v3.4.0.13-base 
79ba365e75a4f9cee074d25a605a26acb660b7de refs/tags/v3.4.0.13-ga 

はしかし、「gitのショー」といくつかの実験では、このコマンドの結果:

% git show --summary --oneline --decorate v3.4.0.13-ga v3.4.0.13-base 
79ba365 (tag: v3.4.0.13-ga, rhins013a) commit message the first 
bfc7747 (tag: v3.4.0.13-base) commit message the second 

ので、私は「show-ref」よりも「show」の方がはるかに精通しています。私は後者を覚えやすく、役立たせることができます。

How to tell which commit a tag points to in Git?の要約も参照してください。

10

注釈付きタグには独自のSHA-1があるため、逆参照する必要があります。しかし、 軽量タグは、既にコミットを指しているので、参照解除することはできません。 を解決するために、我々は両方のリストを表示し、コミットオブジェクトをフィルタする必要があります:軽量タグと

git for-each-ref --sort -v:refname --format '%(objectname) %(objecttype) %(refname) 
%(*objectname) %(*objecttype) %(*refname)' refs/tags | grep commit 

結果:注釈付きのタグと

589610a0114a375f1bff716dd308cf8df08571d3 commit refs/tags/1.4.9 
e25952a74bf379783944bef9c4fcc60600cb764c commit refs/tags/1.4.8 
19b1c2c96a9678837f57eac86cf3d22842731510 commit refs/tags/1.4.7 
7208212a55c4a56af34da781a7f730d6ddd557a1 commit refs/tags/1.4.6 
62ec20337a4125496bd4f56288f3283963153194 commit refs/tags/1.4.5 

結果:

e2b2d6a172b76d44cb7b1ddb12ea5bfac9613a44 commit refs/tags/v2.11.0-rc3^{} 
1310affe024fba407bff55dbe65cd6d670c8a32d commit refs/tags/v2.11.0-rc2^{} 
3ab228137f980ff72dbdf5064a877d07bec76df9 commit refs/tags/v2.11.0-rc1^{} 
1fe8f2cf461179c41f64efbd1dc0a9fb3b7a0fb1 commit refs/tags/v2.11.0-rc0^{} 
454cb6bd52a4de614a3633e4f547af03d5c3b640 commit refs/tags/v2.11.0^{} 
+0

'git log --tags --oneline --no-walk'を使うと注釈付きタグを自動的に見直します。 :) – ADTC

21

git tagコマンドが未発達であるが。コミット履歴の順序で完全なタグの詳細やタグのように、多くは必要ですが、欠落しています。

私は私が欲しい、まさに与えるが、git tagから得ることができない、代わりにこれを好む:

git log --oneline --decorate --tags --no-walk 

これは(それとして新しい順にタグの非常に素晴らしい色分けされたビューを提供します完全なログになります)。そうすれば、タグを見るだけでなく、短縮されたハッシュも表示され、タグのコミットメッセージがコミットされます。私はGitは呼び出すサポートしていないようgit tため、bashのリダイレクトを使用していた:

git config --global alias.tags "log --oneline --decorate --tags --no-walk" 
git config --global alias.t "!git tags" 

注:次のように


は私がgit tgit tagsにそれをエイリアスしています別名からのエイリアス(これはバマーです)。


あなたは、コミット日時を見てみたい場合:

git log --tags --no-walk --date=iso-local --pretty='%C(auto)%h %cd%d %s' 

あなたは独特の味に合うように出力を​​オプションで他の日付形式を使用だけでなく、完全に制御することができます--prettyオプションのどちらのオプションもgit-log Documentationに詳しく記載されています。

+0

非常に有用な答えのようです。ありがとうございました。 – Ceki

+2

OPが尋ねたもの(表示コミット** sha1ハッシュ**)ではなく、コミットメッセージも便利なので非常に便利です。私の+1。 –

+0

独創的な、thx! –

-2
git show-ref [object] 

オブジェクトは、ちょうどあなたの場合には、

を/タグ/ツリー/ブロブをコミットすることができます

git show-ref [tag_name] 
0
git for-each-ref --format='%(if)%(*objectname)%(then)%(*objectname)%(else)%(objectname)%(end) %(refname)' refs/tags 

これは、タグのすべてのコミットのリストが表示されます。注釈付きタグは逆参照されます。ありがとうございましたhereを送信してください。

関連する問題