web-dev-qa-db-ja.com

短いハッシュでGITコミットメッセージを取得するより良い方法は?

以下を使用して、特定のコミットハッシュのコミットメッセージを取得しています。

hash='b55da97'
git log --pretty=oneline ${hash} | grep "${hash}" | awk '{ print $2 }'

ただし、これらは非常に非効率的です。これを行うためのより賢いまたはより安い方法はありますか、それとも私はgreppingとawkingに行き詰まっていますか?

25
ehime

git log(特に)取る:

  • -n num表示されるコミットの数を制限するには、1を選択します(numが9以下の場合は、-num、したがって、-1、略して)
  • --pretty=format:string with directivesログ出力形式を変更します。 %sディレクティブは、コミット「件名」を取得します。これは、onelineでも取得できます。

したがって:git log -n 1 --pretty=format:%s $hash(またはgit log -1 --pretty=format:%s)ここでトリックを行います。

フォーマットディレクティブの完全なリストについては、「PRETTY FORMATS」の下にある git log documentation を参照してください(半分ほど下)。

35
torek

実際に必要なコミットメッセージの量に応じて、使用できるかなりの形式の指定子がいくつかあります。

      ·  %s: subject
      ·  %f: sanitized subject line, suitable for a filename
      ·  %b: body
      ·  %B: raw body (unwrapped subject and body)

したがって、git log -1 --pretty=format:%b <hash>のようなもの、または他の指定子の1つを使用します(%sは、おそらく現在実行していることにより近いと思います)。 -1は、履歴ツリーをたどるのではなく、git logを1つのコミットのみに制限します。

9
twalberg

私は重要なものを1行にダンプするのが好きです...これは私が使用するもので、このページの他の答えを基にしています:

git_log_for_commit.sh

IT=$(git log -1 --pretty=format:"%an, %s, %b, %ai"  $*)
echo "$IT"

出力

jdoe, WORK1766032 - Added templating engine, WIP, 2013-08-15 14:25:59 +0000
8
Brad Parks

ここに記載されているよりもさらに短い答えは

git log --pretty=oneline {your_hash} | grep {your_hash}

1
BishopZ

これはそれを短くするかもしれません

git log --pretty=oneline ${hash} | awk '$0~var {print $2}' var="${hash}"
1
Jotne