現在Gitでチェックアウトされているコミットを見つける


157

git bisectセッションの最中です。

現在実行しているコミット(SHA1ハッシュ)を確認するコマンドは何ですか?git statusこれは提供されません。

編集:私は電話git logして最初のエントリー作品を見ると思いますか?

回答:


173

git bisectセッション中に作業コピーに現在チェックアウトしているコミットを表示するには、少なくとも5つの異なる方法があります(オプション1から4は、2分割を実行していない場合でも機能することに注意してください)。

  1. git show
  2. git log -1
  3. バッシュプロンプト。
  4. git status
  5. git bisect visualize

以下で、各オプションについて詳しく説明します。

オプション1:git show

で説明したように、この答えあなたが現在チェックアウトしている(だけでなく、コミット中に決定する方法の一般的な質問にgit bisect)、あなたは使用することができるgit show-s抑止パッチ出力のオプション:

$ git show --oneline -s
a9874fd Merge branch 'epic-feature'

オプション2:git log -1

また、git log -1現在実行しているコミットを確認することもできます。

$ git log -1 --oneline
c1abcde Add feature-003

オプション3:Bashプロンプト

Gitバージョン1.8.3以降(または以前のバージョンでしたか?)で、作業コピーにチェックアウトした現在のブランチを表示するようにBashプロンプトを構成している場合は、チェックした現在のコミットも表示されます。二等分セッションの間、または「切り離されたヘッド」状態にあるとき。以下の例では、私は現在c1abcdeチェックアウトしています:

# Prompt during a bisect
user ~ (c1abcde...)|BISECTING $

# Prompt at detached HEAD state 
user ~ (c1abcde...) $

オプション4:Gitステータス

また、Gitバージョン1.8.3以降(および以前の可能性git statusもありますが、これも不確かです)では、実行すると、バイセクト時およびデタッチされたHEAD状態のときにチェックアウトしたコミットも表示されます。

$ git status
# HEAD detached at c1abcde <== RIGHT HERE

オプション5:git bisect visualize

最後に、を実行している間、またはその組み込みエイリアスをgit bisect使用して起動することもできます。これにより、現在コミットしているコミット、およびこれまでに不正で良好としてマークしたコミットをグラフィカルに表示できます。これがバージョン1.8.3よりもずっと前に存在していたと私はかなり確信していますが、どのバージョンで導入されたかはわかりません:git bisect visualizegit bisect viewgitk

git bisect visualize 
git bisect view # shorter, means same thing

ここに画像の説明を入力してください


きちんと。私がGit 1.8ではないという質問をしたとき、それ以来私は自分自身にコミットハッシュを示すzsh右プロンプトを取得しました。私がこの質問をしたときから、実際にはこれ以上二等分をしていgit log -p -S <search>ます。
Steven Lu

git statusデタッチ状態でない限り、コミットIDは表示されません。それ以外の場合は、「ブランチ上は何でも」と表示されます。git showでも動作します
キップ

88

あなたはただ行うことができます:

git rev-parse HEAD

さらにビットを説明するには:git rev-parse解釈するためのgitの基本的なコマンドでコミットの名前を指定することができるというエキゾチックな方法のいずれかをしてHEAD、あなたの現在のコミットやブランチへの参照です。(git bisectセッションでは、ブランチではなくコミット(「デタッチされたHEAD」)を直接指します。)

代わりに(そして覚えやすく)は次のようにするだけです:

git show

...デフォルトでは、HEAD指すコミットが表示されます。より簡潔なバージョンでは、次のことができます。

$ git show --oneline -s
c0235b7 Autorotate uploaded images based on EXIF orientation

3
他の場所で使用するためにハッシュを取得するだけの場合はgit rev-parse HEAD、ガベージの代替案ではなく、処理は必要ありません。
Nick T

17
$ git rev-parse HEAD
273cf91b4057366a560b9ddcee8fe58d4c21e6cb

更新:

または(タグがある場合):

(バージョンに名前を付けるのに適していますが、gitに戻すのにはあまり適していません。)

$ git説明
v0.1.49-localhost-ag-1-g273cf91

または(マークが示唆したように、完全を期すためにここにリストします):

$ git show --oneline -s
c0235b7 EXIFの向きに基づいてアップロードされた画像を自動回転

7
覚えやすいものではなく、SHA1を要求しました。;-)
Alexander Gladysh

スクリプトで、いくつかのチェックを行いたい場合は、このversioneは非常に便利です
ダニエルLicitra

13

単純な情報だけを抽出したい場合git showは、--format=<string>オプションを使用してそれを取得できます。そして、との差分を与えないように要求し--no-patchます。つまり、たいていの場合、単一のフィールドである可能性のある、printfスタイルの出力を取得できます。

たとえば、短縮されたハッシュ(%h)だけを取得するには、次のようにします。

$ git show --format="%h" --no-patch
4b703eb

これをbashの環境変数に保存する場合(人々が実行する可能性が高いこと)、次の$()構文を使用できます

$ GIT_COMMIT="$(git show --format="%h" --no-patch)"

$ echo $GIT_COMMIT
4b703eb

できることgit show --helpの完全なリストはにあります。しかし、ここに役立つかもしれないプロパティの省略されたリストがあります:

  • %H ハッシュをコミットする
  • %h 短縮されたコミットハッシュ
  • %T ツリーハッシュ
  • %t 省略されたツリーハッシュ
  • %P 親ハッシュ
  • %p 省略された親ハッシュ
  • %an 著者名
  • %ae 著者のメール
  • %at 作成者の日付、UNIXタイムスタンプ
  • %aI 著者の日付、厳密なISO 8601形式
  • %cn コミッター名
  • %ce コミッターのメール
  • %ct コミッターの日付、UNIXタイムスタンプ
  • %cI コミッターの日付、厳密なISO 8601形式
  • %s 件名
  • %f ファイル名に適したサニタイズされた件名
  • %gD reflogセレクター、例:refs / stash @ {1}
  • %gd reflogセレクターの短縮(例:stash @ {1})

これらのすべての書式設定オプションが、ブランチにshowはありません。
bvj

2

を使用するgit showと、コミットメッセージも表示され、引数を指定しない場合はデフォルトで現在のコミットが使用されます。

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