logge die ersten 10 in git ein


88

Zwei Fragen:

  1. Wie man die ersten 10 Commits in Git von Anfang bis Ende zeigt. (kein Zweig)
  2. Wie die den Commit-Index angeben und protokollieren. (zeige den zweiten oder dritten)

Ich weiß, dass Git Eltern verwenden, um das Commit zu verknüpfen. Es ist einfach, das Commit von Ende zu Anfang zu protokollieren. mögen:git log HEAD~10

Aber ich muss von Anfang bis Ende abfragen, ist es möglich?



Scrollen Sie zu @kostix Antwort
Muhammad Umer

Antworten:


60

Protokollieren Sie einfach alles mit einem Zeilenformat und beenden Sie die Ausgabe:

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

Toll! Das ist es, wonach ich suche. Tks @CharlesB.
Yohan Zhou

3
Oder verwenden Sie git rev-list HEAD | tail -n 10, um die 10 IDs aufzulisten, die Sie dann in einem beliebigen Format anzeigen können (nicht auf die einzeilige Methode beschränkt).
Torek

15
tailscheint die schöne Farbe zu verlieren, die ich in meiner Git-Konsole bekomme. Das Übergeben eines Parameters wie git log --oneline -10in der anderen Antwort funktioniert wie erwartet.
James Hulse

4
Dies ist eindeutig der Hardcore-Unix-Weg, lol. Bitte siehe @kostix Antwort.
9301293

1
Der Nachteil dieser Methode ist, dass ich nur meine Push-Commits sehen kann.
Jack '

243
git log -10

Zeigt 10 letzte Commits an, die mit der Revisionsspezifikation übereinstimmen (eine fehlende Spezifikation bedeutet "alle Commits").

Siehe Manpage:

git help log

Sektion Commit Limiting

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

5
einfach und hängt nicht davon ab tail, ob Sie auf Ihrer Plattform verfügbar sind.
Tenpn

8
& spielt nicht mit der Formatierung / Färbung von Git. Dies sollte die akzeptierte Antwort sein x100
kuzyn

10
Nicht das, was der Op wollte: Er wollte die first10, nicht die latest.
Timo

1
@ Timo, möglicherweise ja, aber die Frage, wie angegeben, ist offen für Interpretationen, und viele Leute scheinen meine Antwort nur wegen dieser offenen Unterschiede zu bewerten. Also, obwohl ich Ihnen technisch zustimme, lassen wir es wohl so, wie es ist ;-) Unter den technisch korrekten Vorschlägen gefällt mir der Kommentar des Torek zur akzeptierten Antwort am besten.
Kostix

@kostix "Wie man die ersten 10 Commits in Git von Anfang bis Ende zeigt" ist für mich nicht "offen für Interpretationen". Es wird offensichtlich nach den ersten 10 Commits gefragt , nicht nach den neuesten .
Bobby Jack

28

Hier mein Ansatz,

So erhalten Sie die ersten 10 Commits:

git log -n 10

-n ist die Nummer

Zusätzliche Um die nächsten 10 Festschreibungen zu erhalten, überspringen Sie die ersten 10:

git log --skip=10 -n 10

Ich denke, dies sollte die akzeptierte Antwort sein. Die Verwendung von Schwanz wird dazu führen, dass --graph nicht mehr in Git Log
Relief.melone funktioniert.

Dies muss die akzeptierte Antwort sein. funktioniert wie ein Zauber für mich
Doogle

Sie verlieren die Schriftfarbe auf der Konsole auch mit dem Schwanz. Dies ist die richtige Antwort
CESCO

14

So erhalten Sie die letzten 10 Commits:

git log HEAD~10..HEAD

Um sie in der ältesten bis neuesten Reihenfolge zu erhalten:

git log --reverse HEAD~10..HEAD

Beachten Sie, dass bei Zusammenführungen möglicherweise mehr als 10 Commits angezeigt werden. Hinzufügen, --first-parentwenn Sie nur das erste übergeordnete Element jedes Zweigs durchlaufen möchten.

Weitere Informationen finden Sie in der Dokumentation zu git rev-list.


Bearbeiten: Sie haben oben bereits eine nützliche Antwort erhalten, um "Commits kurz vor Beginn des Verlaufs anzuzeigen" (siehe auch die Vorbehalte zu mehreren nicht verbundenen Commit-DAGs in einem Repo). Sie können aber auch zB:

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

und:

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

abhängig von der Reihenfolge, in der Sie die Ergebnisse erhalten möchten.


Tks für Ihre Antwort. Aber ich brauche nicht die letzten 10 Commits, sondern die ersten. Um genau zu sein, wenn das Commit ABCDEFG (HEAD) ist. Wie protokolliere ich das ABC und wie protokolliere ich C anhand des Index 2?
Yohan Zhou

Oh! Es gibt keine Garantie dafür, dass es ein einzelnes "First Commit" gibt, aber wenn ja, siehe den Link @CharlesB hinzugefügt.
Torek

Der Weg kann Arbeit sein. irgendein natürlicher Weg? git log --pretty = oneline | wc -l git log HEAD ~ <Die Zahl minus eins oder Index>
yohan zhou

Danke für die Antwort. Dies ist, was ich brauchte, um '-10'-Stiloptionen in meinen Git-Aliasnamen zu vermeiden. die Zahlenargumente akzeptieren.
VicTROLLA

11

Das beste Ergebnis ergibt sich aus der Kombination der beiden besten Antworten:

git log --pretty=oneline -10

1
Vielen Dank, ich verwende dies als Git-Alias , um die letzten Commits schnell anzuzeigen, ohne mein Terminal zu füllen. Ich habe den Alias ​​genannt lkj = log --pretty=oneline --abbrev-commit -10. Jetzt ist mir klar, dass es die Frage des OP nicht beantwortet, aber ich bin hierher gekommen, um nach dem einfachen Nummernschalter zu suchen.
Paul Rougieux

4

Einfach alles umgekehrt protokollieren -1 bedeutet, ein Protokoll aufzulisten

git log  --reverse -1

2

Ich würde unten einfache Syntax Befehl verwenden;

git log -10 --oneline

1
Denken Sie, dies ist der effizienteste Weg!
Nishant

0

Weil ... mehr Details: p

  1. Wie man die ersten 10 Commits in Git von Anfang bis Ende zeigt. (kein Zweig)
  2. Wie die den Commit-Index angeben und protokollieren. (zeige den zweiten oder dritten)

Mit (kein Zweig) fragen Sie möglicherweise eher nach der reflogAhnenkette als nach einer bestimmten Ahnenkette. Das Folgende hat nichts mit dem Zweig zu tun, in dem Sie sich befinden.

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

<sha> HEAD@{###}: action: summary (old)
<sha> HEAD@{###}: action: summary (older)
...
<sha> HEAD@{###}: action: summary (oldest)
  • -gist --walk-reflogsstattdessen die commit Ahnenkette zu Fuß, zu Fuß reflog entries.q
  • |cut -d ' ' -f 2|tr -d ':' > logFügen Sie hinzu , um nur den Reflog-Commit-Index zu protokollieren.

Im Folgenden werden die frühesten Vorfahren des aktuell ausgecheckten Zweigs angezeigt.

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

1 <sha> summary (oldest)
2 <sha> summary (second)
  • --reverse Geben Sie die Commits in umgekehrter Reihenfolge aus.
  • Kann nicht einfach verwendet werden -n 10oder -10da es kaputt geht--reverse
  • cat -n fügt Zeilennummern hinzu (Commit-Index?)


0

Für den Fall, dass jemand mehr als nur ein einzeiliges Protokoll erstellen möchte:

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

Dabei sollte 11am Ende 1mehr als die Anzahl der gewünschten Commits festgelegt werden.

Wie hier erwähnt , git log --reverse -n 10funktioniert es nicht so, wie Sie es brauchen. ( Ich nehme an, es muss nicht kommutativ sein, damit Sie die ersten 10 Commits in umgekehrter Reihenfolge oder die letzten 10 Commits auswählen können 🤪)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.