Zwei Fragen:
- Wie man die ersten 10 Commits in Git von Anfang bis Ende zeigt. (kein Zweig)
- 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?
Antworten:
Protokollieren Sie einfach alles mit einem Zeilenformat und beenden Sie die Ausgabe:
quelle
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).tail
scheint die schöne Farbe zu verlieren, die ich in meiner Git-Konsole bekomme. Das Übergeben eines Parameters wiegit log --oneline -10
in der anderen Antwort funktioniert wie erwartet.Zeigt 10 letzte Commits an, die mit der Revisionsspezifikation übereinstimmen (eine fehlende Spezifikation bedeutet "alle Commits").
Siehe Manpage:
Sektion
Commit Limiting
quelle
tail
, ob Sie auf Ihrer Plattform verfügbar sind.first
10, nicht dielatest
.Hier mein Ansatz,
So erhalten Sie die ersten 10 Commits:
-n ist die Nummer
Zusätzliche Um die nächsten 10 Festschreibungen zu erhalten, überspringen Sie die ersten 10:
quelle
So erhalten Sie die letzten 10 Commits:
Um sie in der ältesten bis neuesten Reihenfolge zu erhalten:
Beachten Sie, dass bei Zusammenführungen möglicherweise mehr als 10 Commits angezeigt werden. Hinzufügen,
--first-parent
wenn 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:
und:
abhängig von der Reihenfolge, in der Sie die Ergebnisse erhalten möchten.
quelle
Das beste Ergebnis ergibt sich aus der Kombination der beiden besten Antworten:
quelle
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.Einfach alles umgekehrt protokollieren -1 bedeutet, ein Protokoll aufzulisten
quelle
Ich würde unten einfache Syntax Befehl verwenden;
quelle
Weil ... mehr Details: p
Mit (kein Zweig) fragen Sie möglicherweise eher nach der
reflog
Ahnenkette 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
-g
ist--walk-reflogs
stattdessen die commit Ahnenkette zu Fuß, zu Fuß reflog entries.q|cut -d ' ' -f 2|tr -d ':' > log
Fü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
--reverse
Geben Sie die Commits in umgekehrter Reihenfolge aus.-n 10
oder-10
da es kaputt geht--reverse
cat -n
fügt Zeilennummern hinzu (Commit-Index?)quelle
Für den Fall, dass jemand mehr als nur ein einzeiliges Protokoll erstellen möchte:
Dabei sollte
11
am Ende1
mehr als die Anzahl der gewünschten Commits festgelegt werden.Wie hier erwähnt ,
git log --reverse -n 10
funktioniert 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 🤪)quelle