短いGitバージョンのハッシュを取得する


381

HEADGitからの短いバージョンのハッシュを取得するためのより明確な方法はありますか?

私が得るのと同じ出力を表示したい:

 git log -n 1 | head -n 1 | sed -e 's/^commit //' | head -c 8

最初は上記のコマンドを使用してバージョン文字列を生成しましたが、これはさらに優れています。

git describe --tags

0.1.12(タグ付きコミット)または0.1.11-5-g0c85fbc(タグの後の5つのコミット)のような文字列を出力します。


2
パイプなどを使ってデータを操作するのは得意なので、gitエイリアスについて知っておく必要があります。この場合、必要なもの(回答を参照)のコマンドがありますが、最終的にはないものを見つけ、エイリアスはそのために最適です。
MatrixFrog 2011

@ MatrixFrog先端をありがとう!私はすでにいくつかの単純なgitエイリアスを持っていますが、それがどれほど強力であるかを今まで知りませんでした。特にgraphvizの表示が好きです。
Attila O.

1
ええと。実行するgit describe --tagsと、「致命的:名前が見つかりません、何も説明できません」というメッセージが表示されます。
Quinn Comendant 2017年

@QuinnComendant機能させるには、最初に何かにタグを付ける必要があり--tagsます。最初にタグを作成してみてください。例えばgit tag 1.0.0
Attila O.

可能性のあるgitの
Cristian Ciupitu

回答:


696

これを試して:

git rev-parse --short HEAD

コマンドgit rev-parseは非常に多くの異なることを行うことができるので、それを見つけるためにドキュメントを非常に注意深く調べる必要があります。


4
あなたは、次の作業を実行して、ハッシュをコミット逆を行うと、短期から長期コミットハッシュを取得することができますgit rev-parse HEAD
アンディ・

9
このコマンドは、のような他のソースからコピー貼り付けされた長いリビジョンIDでも機能しますgit log。たとえば、git rev-parse --short 97dd2ae065771908ee9ae0fa08ccdb58b5a6b18freturns97dd2ae
chiborg

3
それは参照でのみ機能します。HEAD、タグ名、ブランチ名、またはプレーンハッシュを使用できます。
d12frosted 2016

1
警告:これは7文字のコミットハッシュ(デフォルト)を返しますが、gitlabなどの多くの場所では8文字を使用しています!
masterxilo 2019年

3
を使用git rev-parse --short=8 HEADして、GitLabで使用される8文字の長さを取得できます。またcore.abbrevgit config core.abbrev 8 Source
n8felton


70
git log -1 --abbrev-commit

それも行います。

git log --abbrev-commit

省略されたSHA-1チェックサムを含むログエントリが一覧表示されます。


1
2つ目はまさに私が探していたものです。覚えるのが非常に簡単で、日常生活で役立ちます。
iFreilicht 2017年

でも動作します。git log --pretty=onelineとは異なり--oneline、フルサイズのハッシュを出力します。
sdaau

46

Git commitの短いバージョンとGit commitメッセージを確認する簡単な方法は次のとおりです。

git log --oneline

これは、

git log --pretty=oneline --abbrev-commit

1
--onelineが最良の選択肢です
Juan Ignacio Barisich

1
@JuanIgnacioBarisich最適なオプションは、表示する必要がある情報の量によって異なります。著者や日付などの詳細情報が必要な場合は、git log --abbrev-commitの方が適しています。また、log --prettyは、ログに記録する情報を選択するためのより良いオプションかもしれません
速度

35

本当に簡単な方法は次のとおりです。

git describe --always

1
ha、甘い、それはgit describeが失敗するケースに対処する(describeは履歴のどこかにタグを予期しているため)thx
keen

8
厳密に短いハッシュが必要な場合は適切ではありません。これにより、注釈付きタグが返される可能性があるためです。
Zitrax、2016年

場合によってgit describe --longは役立つことがあります。ドキュメントから:「タグと一致する場合でも、常に長い形式(タグ、コミット数、および短縮されたコミット名)を出力します。」[私の強調]
djvg

使用する--long方が良いですが、短いハッシュが得られたり、ハイフンで区切られた3つのアイテムが得られたりすることがあります。最近、私は受け入れられた答えを使います。当時、私は注釈付きタグについて知りませんでした—おそらくそれらは存在していませんでした!
Steven Shaw

16

短いハッシュと最後のコメントのあるブランチ:

git branch -v

  develop      717c2f9 [ahead 42] blabla
* master       2722bbe [ahead 1] bla

10

次の設定のGitバージョン2.7.4があります。

git config --global log.abbrevcommit yes
git config --global core.abbrev 8

今私がするとき:

git log --pretty=oneline

8桁の短縮されたコミットIDを取得します。

ed054a38 add project based .gitignore
30a3fa4c add ez version
0a6e9015 add logic for shifting days
af4ab954 add n days ago
...

1
このコードは質問に答えることがありますが、問題を解決する方法と理由に関する追加のコンテキストを提供すると、回答の長期的な価値が向上します。
SherylHohman 2018年

1
いい案。感謝します、シェリル
ダウンストリーム

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.