1. ホーム
  2. ギット

[解決済み】Gitで現在チェックアウトされているコミットを検索する

2022-04-22 10:43:42

質問

の途中なんですが git bisect セッションを行います。

現在どのコミット(SHA1ハッシュ)にいるか調べるコマンドは? git status はこれを提供しません。

編集 git log で、最初のエントリを見るのは有効ですか?

解決方法は?

を実行中に、現在作業コピーにチェックアウトしているコミットを表示するには、少なくとも5つの異なる方法があります。 git bisect セッション ( なお、1~4のオプションは、bisect を行っていないときにも有効です。 ):

  1. git show .
  2. git log -1 .
  3. Bashのプロンプトです。
  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 プロンプトを設定すると、bisect セッションや "detached HEAD" 状態のときにチェックアウトした現在のコミットを表示するようにもなります。以下の例では、現在 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 を使用することもできます。 git bisect visualize またはその組み込みエイリアス git bisect view を起動します。 gitk これにより、自分が今どのコミットにいるのか、またこれまでに悪いとマークしたコミット、良いとマークしたコミットをグラフィカルに表示することができます。これはバージョン 1.8.3 よりもずっと前から存在していたことは確かですが、どのバージョンで導入されたのかはよくわかりません。

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

<イグ