118

2つの質問:

  1. 最初から最後までgitで最初の10個のコミットを表示する方法。(ブランチなし)
  2. コミットインデックスを指定してログに記録する方法。(2番目または3番目を表示)

gitが親を使用してコミットをリンクしていることを知っています。コミットを最後から最初までログに記録するのは簡単です。お気に入り:git log HEAD~10

しかし、最初から最後までクエリを実行する必要がありますが、それは可能ですか?

4

10 に答える 10

299
git log -10

リビジョン仕様に一致する最新のコミットが10個表示されます(仕様がない場合は「すべてのコミット」を意味します)。

マンページを参照してください。

git help log

セクションCommit Limiting

-<number>, -n <number>, --max-count=<number>
    Limit the number of commits to output.
于 2012-04-27T08:27:26.160 に答える
66

すべてを1行の形式でログに記録し、出力を調整するだけです。

git log  --pretty=oneline | tail -n 10 
于 2012-04-27T07:04:45.087 に答える
36

ここに私のアプローチ、

最初の10コミットを取得するには:

git log -n 10

-nは数字です

追加 次の10コミットを取得するには、最初の10をスキップします。

git log --skip=10 -n 10
于 2017-12-18T09:15:40.840 に答える
15

最後の10個のコミットを取得するには:

git log HEAD~10..HEAD

それらを古いものから新しいものの順に取得するには:

git log --reverse HEAD~10..HEAD

マージがある場合、これは10を超えるコミットを示す可能性があることに注意してください。--first-parent各ブランチの最初の親のみをトラバースする場合は、追加します。

詳細については、のドキュメントを参照してくださいgit rev-list


編集:「履歴の開始近くにコミットを表示する」に対する上記の有用な回答はすでに得られています(ここでも、リポジトリ内の複数の接続されていないコミットDAGに関する警告を参照してください)。ただし、次のようにすることもできます。

git log --no-walk `git rev-list HEAD | tail -n 10`

と:

git log --no-walk `git rev-list --reverse HEAD | head -n 10`

結果が必要な順序によって異なります。

于 2012-04-27T06:14:23.723 に答える
14

最良の結果は、両方の最良の答えの組み合わせによってもたらされます。

git log --pretty=oneline -10
于 2019-03-19T02:00:33.383 に答える
13

以下の簡単な構文コマンドを使用します。

git log -10 --oneline
于 2020-05-11T05:07:09.543 に答える
4

すべてを逆に記録するだけです-1は、1つのログをリストすることを意味します

git log  --reverse -1
于 2012-11-22T09:18:26.760 に答える
1

このきちんとした出力形式を試してください:

git log --date=short -10 --pretty="%C(Yellow)%h %x09 %C(reset)%ad %x09 %C(Cyan)%an: %C(reset)%s"

次のような色で短い行を印刷します。 ここに画像の説明を入力してください

于 2021-02-04T16:55:13.970 に答える
0

なぜなら...詳細:p

  1. 最初から最後までgitで最初の10個のコミットを表示する方法。(ブランチなし)
  2. コミットインデックスを指定してログに記録する方法。(2番目または3番目を表示)

reflog(ブランチなし)によって、特定の祖先チェーンではなく、質問している可能性があります。以下は、現在のブランチとは関係ありません。

git log -g --pretty=oneline | tail -10

<sha> HEAD@{###}: action: summary (old)
<sha> HEAD@{###}: action: summary (older)
...
<sha> HEAD@{###}: action: summary (oldest)
  • -gコミットの--walk-reflogs祖先チェーンをウォークする代わりに、reflogentries.qをウォークします。
  • |cut -d ' ' -f 2|tr -d ':' > logreflogコミットインデックスのみをログに追加します。

以下は、現在チェックアウトされているブランチの最も古い祖先を示しています。

git log --reverse --pretty=oneline | head -10 | cat -n

1 <sha> summary (oldest)
2 <sha> summary (second)
  • --reverse コミットを逆の順序で出力します。
  • 単純に使用できない、-n 10または-10壊れてしまうため--reverse
  • cat -n行番号を追加します(コミットインデックス?)

于 2014-04-17T19:57:04.307 に答える
0

誰かが単なるgit1行ログ以上のものを必要とする場合:

git log --reverse | awk 'NR>1 {print last} {last=$0}; /^commit/ && ++c==11{exit}'

11最後に、必要なコミット数よりも多く設定する必要があります1

ここ指摘しgit log --reverse -n 10ているように、必要に応じて機能しません。(最初の10個のコミットを逆の順序で選択する機能または最後の10個のコミットを選択できるようにするには、非可換である必要があると思います

于 2019-07-03T05:01:57.367 に答える