最初の10をgitに記録


89

2つの質問:

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

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

しかし、最初から最後までクエリする必要がありますが、可能ですか?



@kostixの回答までスクロール
Muhammad

回答:


59

すべてを1行の形式でログに記録し、出力をテールします。

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

すごい!それが探しているものです。Tks @CharlesB。
yohan zhou

3
または、を使用git rev-list HEAD | tail -n 10してリストする10個のIDを取得し、任意の形式で表示できます(1行の方法に限定されません)。
torek

15
tail私のgitコンソールで取得した素敵な色が失われているようです。git log --oneline -10他の答えのようにパラメーターを渡すと、期待どおりに機能します。
James Hulse、2015

4
これは明らかにハードコアなUnixの方法です(笑)。@kostixの回答をご覧ください。
-9301293

1
このメソッドの欠点は、プッシュされたコミットしか表示できないことです。
ジャック

245
git log -10

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

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

git help log

セクション Commit Limiting

-<number>, -n <number>, --max-count=<number>
    Limit the number of commits to output.

6
シンプルで、tailプラットフォームで利用できるかどうかに依存しません。
tenpn

8
&はgitのフォーマット/色付けを変更しません。これは受け入れられた回答x100
kuzynである

10
ないopが何を望むか:彼が望んでいたfirst10、ではありませんlatest
Timo

1
@Timo、たぶんそうかもしれませんが、述べられている質問は解釈のために開かれており、多くの人々はこれらの開かれた違いのために私の回答に賛成することになるようです。ですから、技術的には同意しますが、そのままにしておこうと思います。
kostix 2017年

@kostix「gitの最初の10のコミットを最初から最後まで表示する方法」は、私にとっては「解釈の自由」ではありません。明らかに、最新ではなく、最初の 10件のコミットを求めています。
ボビージャック

29

ここに私のアプローチ、

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

git log -n 10

-nは数値です

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

git log --skip=10 -n 10

これはきちんとした答えになるはずだと思います。尾を使用すると、gitのログに動作を停止する原因となります--graph
relief.melone

これは受け入れられた答えでなければなりません。私にとっては魅力のように機能します
Doogle '26 / 02/26

尾を使用しても、コンソールのフォントの色が失われます。これが正解です
CESCO

14

最後の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`

結果が必要な順序に応じて。


ご返信ありがとうございます。しかし、最後の10回のコミットは必要ありませんが、最初のコミットは必要です。具体的には、コミットがABCDEFG(HEAD)の場合。ABCを記録する方法とインデックス2でCを記録する方法
ヨハンジョウ

ああ!「最初のコミット」が1つあるという保証はありませんが、ある場合は、@ CharlesBのリンクを追加してください。
torek

道は働くことができます。自然な方法は?git log --pretty = oneline | wc -l git log HEAD〜<数値から1またはインデックスを引いた値>
ヨハンジョウ

答えてくれてありがとう。これは、gitエイリアスで「-10」スタイルのオプションを回避するために必要なものです。数引数を受け入れます。
vicTROLLA、2015

11

最良の結果は、両方の最良の回答の組み合わせで得られます。

git log --pretty=oneline -10

1
おかげで私はこれをgitエイリアスとして使用し、端末をいっぱいにすることなく最近のコミットをすばやく表示しています。エイリアスと呼びましたlkj = log --pretty=oneline --abbrev-commit -10。OPの質問には答えられないことに気づきましたが、単純な数値スイッチを探してここに来ました。
Paul Rougieux


2

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

git log -10 --oneline

1
これが最も効率的な方法だと思います!
Nishant

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代わりに、祖先チェーンをコミット歩行、REFLOG entries.qを歩きます
  • add |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 行番号を追加します(インデックスをコミットしますか?)


0

誰かがgitの1行のログ以上のものを必要とする場合:

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

どこ11終わりには、に設定する必要があります1コミット数よりも多くがあります。

ここでは指摘git log --reverse -n 10あなたはそれが必要として仕事をしません。(私はあなたに逆順で最初の10のコミットまたは最後の10のコミットを選択する能力を与えるために非可換である必要があると思います 🤪)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.