web-dev-qa-db-ja.com

git logは1つのコミットIDのみを表示します

助けが必要です。 1つのコミットIDのみを表示することは可能ですか? git log -3は1-3のログを表示するため、3だけを表示したいだけです。どのコマンドが一致するでしょうか?

私はコマンドを使用します

       git log -3 --pretty=format:"%h"

結果は

       ffbef87
       cf0e073
       1c76c5d

1c76c5dのみを表示したいだけです。

49
rkevx21

現在のコミットからgit show番目の親を参照 を使用できます(つまり、HEADからの2番目の祖先)。また、git showgit logと同じフォーマット文字列を受け入れます。

git show HEAD~2 --pretty=format:"%h" --no-patch

更新(2016-12-01

さらに良い方法は、 rev-parse配管コマンド--shortオプションとともに使用して、短縮(7文字)コミットIDを出力することです。

git rev-parse --short HEAD~2

または、コミットIDの正確な長さを指定することもできます。

git rev-parse --short=4 HEAD~2
50

そのためのツールがあります:

git log -3 --pretty=format:"%h" | tail -n 1

次のフラグを使用して、ハッシュのn文字を(デフォルトの代わりに)含めることができます。

--abbrev=n 

Unix哲学の関連部分

1)各プログラムが1つのことをうまく行えるようにします。新しいジョブを実行するには、新しい「機能」を追加して古いプログラムを複雑にするのではなく、新しくビルドします。

2)すべてのプログラムの出力が、まだ未知の別のプログラムへの入力になることを期待します。無関係な情報で出力を乱雑にしないでください。厳密に列またはバイナリの入力形式を避けてください。インタラクティブな入力を主張しないでください。

... [すなわち]

  • 1つのことを行うプログラムを作成し、それをうまく実行します。
  • 連携して動作するプログラムを作成します。

https://en.wikipedia.org/wiki/Unix_philosophy

5
DylanYoung

少なくともgitバージョン2.3.8以降では、--skipオプション:

   git log -1 --skip 2 --pretty=format:"%h"

Gitのどの以前のバージョンがサポートしているかわからない--skip

4
Andy