Ich habe eine Filiale namens development
. Jetzt möchte ich wissen, wie viele Commits pro Tag stattgefunden haben.
Ich habe diesen Befehl ausprobiert, aber er zählt alle Commits aus dem Zweig
git shortlog -s -n
Sanjay Dutt
Ich habe eine Filiale namens development
. Jetzt möchte ich wissen, wie viele Commits pro Tag stattgefunden haben.
Ich habe diesen Befehl ausprobiert, aber er zählt alle Commits aus dem Zweig
git shortlog -s -n
unterstrich_d
Kurz und bündig:
git log --date=short --pretty=format:%ad | sort | uniq -c
Beispielausgabe:
1 2017-12-08
6 2017-12-26
12 2018-01-01
13 2018-01-02
10 2018-01-14
7 2018-01-17
5 2018-01-18
Erläuterung:
git log
ist natürlich Voraussetzung.--date=short
setzt unsere date-format
zu YYYY-MM-DD
was (A) alles ist, was wir brauchen, und (B) wird anschließend alphabetisch sort
in chronologischer Reihenfolge.--pretty=format:%ad
erzählt git
dass wir nur jedes Commit bekommen wollen a
Autor d
aßen in unserem bevorzugten date-format
. Wenn Sie wollten, könnten Sie stattdessen verwenden cd
zum c
unterlassen d
gegessen, aber das wird viel weniger nützlich, sobald Sie cherry-pick
, rebase
etc.| sort
wird benötigt für uniq
, da nur auf benachbarte Duplikate geprüft wird. Und natürlich wollen wir mit ziemlicher Sicherheit, dass die Datteln sowieso am Ende bestellt werden.| uniq -c
zählt jeweils die Anzahl benachbarter Duplikate YYYY-MM-DD
und stellt diese Zählung dem Datum voran.Wenn Sie das als tabulatorgetrenntes Datum wünschen, dann zählen Sie es für die Eingabe in eine Grafik-Engine oder ähnliches, dann leiten Sie einfach das obige Ergebnis ein
awk 'BEGIN{OFS = "\t"} {print $2, $1}'
alextercete
Versuche dies:
$ git rev-list --count --since=<start-date> --before=<end-date> <ref>
Um beispielsweise die Anzahl der gestern im aktuellen Zweig durchgeführten Commits zu erhalten:
$ git rev-list --count --since=yesterday --before=today HEAD
Es werden auch absolute Daten akzeptiert:
$ git rev-list --count --since=2016-03-02 --before=2016-03-03 HEAD
Ich habe es versucht mit:
git-Protokoll | grep Datum | awk ‘{print ” : “$4” “$3” “$6}’ | uniq-c
Und es funktioniert. Sie erhalten so etwas wie:
5 : 3 Mar 2016
4 : 2 Mar 2016
8 : 1 Mar 2016
[...]
Ich habe den Befehl gefunden hier.
Kombiniere mit grep “dein Datum”. Dies funktioniert nur für einen bestimmten Tag. Die obige Lösung hat Bereiche.
– Benutzer5201742
3. März 2016 um 13:00 Uhr
Dies scheint unnötig verschwenderisch zu sein, da es eine normale, volle Leitung abgibt git log
statt nur das Minimum, das es pro Commit benötigt. Du auch nicht sort
was dazu führen könnte uniq
schlechte Ergebnisse liefern und/oder Sie anschreien, weil weder Autor (was Sie hier zeigen) noch Commit-Daten in chronologischer Reihenfolge sein müssen.
– Unterstrich_d
18. Januar 2018 um 19:35 Uhr