2つの質問:
- 最初から最後までgitで最初の10個のコミットを表示する方法。(ブランチなし)
- コミットインデックスを指定してログに記録する方法。(2番目または3番目を表示)
gitが親を使用してコミットをリンクしていることを知っています。コミットを最後から最初までログに記録するのは簡単です。お気に入り:git log HEAD~10
しかし、最初から最後までクエリを実行する必要がありますが、それは可能ですか?
git log -10
リビジョン仕様に一致する最新のコミットが10個表示されます(仕様がない場合は「すべてのコミット」を意味します)。
マンページを参照してください。
git help log
セクションCommit Limiting
-<number>, -n <number>, --max-count=<number>
Limit the number of commits to output.
すべてを1行の形式でログに記録し、出力を調整するだけです。
git log --pretty=oneline | tail -n 10
ここに私のアプローチ、
最初の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`
結果が必要な順序によって異なります。
最良の結果は、両方の最良の答えの組み合わせによってもたらされます。
git log --pretty=oneline -10
以下の簡単な構文コマンドを使用します。
git log -10 --oneline
すべてを逆に記録するだけです-1は、1つのログをリストすることを意味します
git log --reverse -1
なぜなら...詳細: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
祖先チェーンをウォークする代わりに、reflogentries.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
行番号を追加します(コミットインデックス?)誰かが単なるgit1行ログ以上のものを必要とする場合:
git log --reverse | awk 'NR>1 {print last} {last=$0}; /^commit/ && ++c==11{exit}'
11
最後に、必要なコミット数よりも多く設定する必要があります1
。
ここで指摘しgit log --reverse -n 10
ているように、必要に応じて機能しません。(最初の10個のコミットを逆の順序で選択する機能または最後の10個のコミットを選択できるようにするには、非可換である必要があると思います)