1008 Stimmen

Wie erhalte ich die Anzahl der Git-Commits?

Ich möchte die Anzahl der Übertragungen meines Git-Repositorys abfragen, ähnlich wie die Revisionsnummern in SVN.

Das Ziel ist es, sie als eindeutige, aufsteigende Build-Nummer zu verwenden.

Ich mache das derzeit auf Unix/Cygwin/msysGit:

git log --pretty=format:'' | wc -l

Aber ich finde, es ist ein bisschen wie ein Hacken.

Gibt es eine bessere Möglichkeit, dies zu tun? Es wäre cool, wenn ich tatsächlich keine wc oder sogar Git, so dass es auf einem nackten Windows funktionieren könnte. Einfach eine Datei oder eine Verzeichnisstruktur lesen...

2 Stimmen

Vielleicht finden Sie hier interessante Antworten: Was ist das Git-Äquivalent für die Revisionsnummer?

249 Stimmen

git rev-list HEAD --count Git-Rev-Liste

19 Stimmen

@jberger: Ich denke, Ihr Kommentar sollte in eine Antwort umgewandelt werden.

13voto

Pankaj Tanwar Punkte 462

Es gibt ein paar coole Methoden, um das zu tun -

  • Erste Methode

git shortlog -s

Dieser Befehl gibt eine Liste der Commits aus, die von allen Benutzern gezählt wurden, die zum Projektarchiv beigetragen haben.

956 Pankaj Tanwar
235 The Ninja
540 The Hardcore Geek
664 The Ever Shining Star
984 The Experienced Man

Um die Gesamtzahl der Übertragungen zu erhalten, müssen Sie einfach -

git shortlog -s | grep "Pankaj Tanwar"

es druckt -

956 Pankaj Tanwar
  • Eine andere saubere und coole Methode ist -

    git rev-list HEAD --author="Pankaj Tanwar" --count

Um die Gesamtzahl der beigetragenen Codezeilen und die Gesamtzahl der gestellten Pull Requests zu berechnen, prüfen Sie dieser Blog

13voto

NuclearPeon Punkte 5239

Wenn Sie nur einen Zweig verwenden, wie z.B. master, denke ich, dass dies gut funktionieren würde:

git rev-list --full-history --all | wc -l

Dabei wird nur eine Zahl ausgegeben. Sie können es mit einem Alias versehen, z.B.

git revno

um die Dinge wirklich bequem zu machen. Bearbeiten Sie dazu Ihre .git/config Datei und fügen Sie dies ein:

[alias]
    revno = "!git rev-list --full-history --all | wc -l"

Dies funktioniert nicht unter Windows. Ich kenne das Äquivalent von "wc" für dieses Betriebssystem nicht, aber ein Python-Skript zu schreiben, das die Zählung für Sie übernimmt, wäre eine plattformübergreifende Lösung.

EDIT : Zählung zwischen zwei Übertragungen abrufen:


Ich habe nach einer Antwort gesucht, die zeigt, wie man die Anzahl der Übertragungen zwischen zwei beliebigen Revisionen ermitteln kann, und habe keine gefunden.

git rev-list --count [older-commit]..[newer-commit]

7voto

Pat Notz Punkte 196406

Es gibt ein nettes Hilfsskript, das die Git-Leute verwenden, um eine nützliche Versionsnummer auf der Grundlage der Git-Beschreibung zu erzeugen. Ich zeige das Skript und erkläre es in meiner Antwort auf Wie würden Sie die aktuelle Commit-ID in die Dateien eines Git-Projekts aufnehmen? .

7voto

FedericoCapaldo Punkte 1409

Der folgende Befehl gibt die Gesamtzahl der Übertragungen im aktuellen Zweig aus.

git shortlog -s -n  | awk '{ sum += $1; } END { print sum; }' "$@"

Sie setzt sich aus zwei Teilen zusammen:

  1. Druckt die Gesamtzahl der Protokolle, gruppiert nach Autor ( git shortlog -s -n )

    Beispielhafte Ausgabe

      1445  John C
      1398  Tom D
      1376  Chrsitopher P
       166  Justin T
       166  You
  2. Addieren Sie die Gesamtzahl der Übertragungen jedes Autors, d. h. das erste Argument jeder Zeile, und geben Sie das Ergebnis aus ( awk '{ sum += $1; } END { print sum; }' "$@" )

    Mit dem gleichen Beispiel wie oben ergibt sich folgende Summe 1445 + 1398 + 1376 + 166 + 166 . Daher wird die Ausgabe sein:

      4,551

6voto

makuchaku Punkte 45

Git rev-parse --short HEAD

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X