2つの質問:
Gitは親を使用してコミットをリンクすることを知っています。コミットを最初から最後まで簡単に記録できます。など:git log HEAD~10
しかし、最初から最後までクエリする必要がありますか?
すべてを1行の形式でログに記録し、出力を末尾にします。
git log --pretty=oneline | tail -n 10
git log -10
リビジョン仕様に一致する最新のコミットを10件表示します(仕様がない場合は「すべてのコミット」を意味します)。
マンページを参照してください:
git help log
セクション - Commit Limiting
-<number>, -n <number>, --max-count=<number>
Limit the number of commits to output.
ここで私のアプローチ、
最初の10件のコミットを取得するには:
git log -n 10
-nは数値
追加次の10のコミットを取得するには、最初の10をスキップします。
git log --skip=10 -n 10
過去10件のコミットを取得するには:
git log HEAD~10..HEAD
それらを最古から最新の順に取得するには:
git log --reverse HEAD~10..HEAD
マージがある場合、10件を超えるコミットが表示される可能性があることに注意してください。各ブランチの最初の親のみを走査する場合は、--first-parent
を追加します。
詳細については、git rev-list
のドキュメントを参照してください。
git log --no-walk `git rev-list HEAD | tail -n 10`
そして:
git log --no-walk `git rev-list --reverse HEAD | head -n 10`
結果を取得する順序に応じて。
単にすべてを逆順にログに記録する-1は、1つのログをリストすることを意味します
git log --reverse -1
最良の結果は、両方のベストアンサーの組み合わせで得られます。
git log --pretty=oneline -10
なぜなら...詳細:p
(分岐なし)では、特定の祖先チェーンではなく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
コミットの祖先チェーンを調べる代わりに、reflog entries.qを調べます|cut -d ' ' -f 2|tr -d ':' > log
を追加して、reflogコミットインデックスのみを記録します。以下は、現在チェックアウトされているブランチの最も早い祖先を示します。
git log --reverse --pretty=oneline | head -10 | cat -n
1 <sha> summary (oldest)
2 <sha> summary (second)
--reverse
コミットを逆順で出力します。-n 10
を壊すので、単に-10
または--reverse
を使用することはできませんcat -n
は行番号を追加します(インデックスをコミットしますか?)誰かがgitの1行のログ以上のものを必要としている場合:
git log --reverse | awk 'NR>1 {print last} {last=$0}; /^commit/ && ++c==11{exit}'
末尾の11
は、必要なコミットの数よりも1
に設定する必要があります。
here が指摘するように、git log --reverse -n 10
は必要に応じて機能しません。 (逆順で最初の10個のコミットまたは最後の10個のコミットを選択する機能を提供するには、非可換である必要があると思います?? ??)