Ich habe diese Antwort bereits gefunden: Anzahl der Commits für den Zweig in git, aber das setzt voraus, dass der Zweig vom Master erstellt wurde.
Wie kann ich die Anzahl der Commits entlang eines Zweigs zählen, ohne mich auf diese Annahme zu verlassen?
In SVN ist dies trivial, aber aus irgendeinem Grund ist es wirklich schwierig, es in Git herauszufinden.
Antworten:
So zählen Sie die Commits für den Zweig, in dem Sie sich befinden:
für einen Zweig
Wenn Sie die Commits für einen Zweig zählen möchten, die seit dem Erstellen des Zweigs vorgenommen wurden
Dies zählt alle jemals getätigten Commits, die nicht auch im Filialnamen enthalten sind.
Beispiele
Ergebnis: 3
Wenn Ihre Niederlassung aus einer Niederlassung mit dem Namen stammt
develop
:Ergebnis: 3
Zusammenführungen ignorieren
Wenn Sie einen anderen Zweig ohne schnellen Vorlauf in den aktuellen Zweig einbinden und die oben genannten Schritte ausführen, wird auch die Zusammenführung gezählt. Dies liegt daran, dass für git eine Zusammenführung ein Commit ist.
Wenn Sie diese Commits nicht zählen möchten, fügen Sie Folgendes hinzu
--no-merges
:quelle
git log
funktionieren die unten aufgeführten Vorschläge zur Hölle besser als alle anderen Vorschläge.Um die Anzahl der Commits zu sehen, können Sie die oben von Peter vorgeschlagenen Schritte ausführen
Wenn Sie die Anzahl der von jeder Person vorgenommenen Commits anzeigen möchten, versuchen Sie diese Zeile
erzeugt eine Ausgabe wie diese
quelle
Möglicherweise ist eine relativ neue Version von Git erforderlich, aber das funktioniert gut für mich:
Dies gibt mir eine genaue Anzahl von Commits in der aktuellen Verzweigung, deren Basis auf Master basiert.
Der Befehl in Peters Antwort
git rev-list --count HEAD ^develop
enthält viele weitere Commits, 678 vs 97 für mein aktuelles Projekt.Mein Commit-Verlauf ist in diesem Zweig linear, also YMMV, aber es gibt mir die genaue Antwort, die ich wollte: "Wie viele Commits habe ich bisher in diesem Feature-Zweig hinzugefügt?".
quelle
A special notation "<commit1>..<commit2>" can be used as a short-hand for "^'<commit1>' <commit2>". For example, either of the following may be used interchangeably: $ git rev-list origin..HEAD $ git rev-list HEAD ^origin
git fetch upstream; BEHIND=$(git rev-list --count HEAD..upstream/master); git merge --ff-only upstream/master~$BEHIND;
steht nicht an. HINTER ist wie 1800, wenn in Wirklichkeit nichts Größeres als das Zusammenführen von Upstream / Master ~ 400 Änderungen hervorruft. Verwenden--no-merges
ist nicht viel besser, gibt wie 900. Und wenn ich eine Zusammenführung wie diese mit ~ 800 mache und die Anzahl der Umdrehungslisten 1800 ist, dann mache ich eine Zusammenführung mit ~ 790, ich bekomme zwischen 6 und 28 niedrigere Anzahl in Umdrehungen -aufführen.Wie viel Commits wurden für den aktuellen Zweig seit Beginn der Geschichte durchgeführt, ohne Commits von zusammengeführten Zweigen:
Aus der Dokumentation git rev-list --help :
Hinweis: Flacher Klon verkleinert die Verlaufsgröße. Wenn Sie beispielsweise mit klonen
--depth 1
, wird 1 zurückgegeben.Anzahl der seit einem anderen Commit durchgeführten Commits:
oder das gleiche:
oder verwenden Sie eine andere Git-Referenz :
Count Commits seit 2018 durchgeführt
01-01-2018, 01.01.2018, 2018.01.01 funktioniert auch.
git rev-label
Ich habe ein Skript geschrieben, um eine Versionsrevision von Git in einem Format zu erhalten,
'$refname-c$count-g$short$_dirty'
das sich erweitertmaster-c137-gabd32ef
.Das Skript selbst enthält Hilfe.
quelle
Wie wäre es mit
git log --pretty=oneline | wc -l
Das sollte alle Commits aus der Sicht Ihrer aktuellen Niederlassung zählen.
quelle
Ich mache gerne
git shortlog -s -n --all
. Gibt Ihnen eine Liste mit Namen und Anzahl der Commits im "Leaderboard" -Stil.quelle
Eine Möglichkeit besteht darin, das Protokoll für Ihren Zweig aufzulisten und die Zeilen zu zählen.
quelle
Nun, die ausgewählte Antwort funktioniert nicht, wenn Sie Ihren Zweig aus einem unspezifischen Zweig herausgegabelt haben (dh nicht
master
oderdevelop
).Hier biete ich eine andere Möglichkeit an, die ich in meinen
pre-push
Git-Hooks verwende.Für weitere Analysen besuchen Sie bitte meinen Blog
quelle
Da das OP auf die Anzahl der Commits für den Zweig in git verweist, möchte ich hinzufügen, dass die dort gegebenen Antworten auch mit jedem anderen Zweig funktionieren, zumindest seit git Version 2.17.1 (und scheinbar zuverlässiger als die Antwort von Peter van der Does):
richtig funktionieren:
Der letzte Befehl gibt erwartungsgemäß keine Commits aus, da ich gerade den Zweig erstellt habe. Der vorherige Befehl gibt mir die tatsächliche Anzahl der Commits in meinem Entwicklungszweig abzüglich der Merge-Commits an.
funktioniert nicht richtig:
In beiden Fällen erhalte ich die Anzahl aller Commits im Entwicklungszweig und Master, von denen die Zweige (indirekt) abstammen.
quelle
Wenn Sie ein UNIX-System verwenden, können Sie dies tun
quelle
Sie können auch Git Log | machen grep commit | wc -l
und das Ergebnis zurückbekommen
quelle
git log
Ausgabe angezeigt , sodass das Festschreiben im Ergebnis zweimal gezählt wird. Noch schlimmer, wenn die Festschreibungsnachricht das Wort "Festschreiben" zweimal in zwei separaten Zeilen enthalten sollte.