Wie kann ich ein Protokoll aus allen Zweigen gleichzeitig für den Autor erstellen?

212

Ich muss den Bericht über alle Commits erhalten, die der Autor gemacht hat. Bisher habe ich das Skript, das den folgenden Befehl umschließt:

git log --pretty=format:"%ad:%an:%d:%B" --date=short --reverse --all --since=2.months.ago --author=Petr

Es funktioniert gut. Es werden jedoch nur die Aktionen für den aktuellen Zweig gemeldet. Gibt es eine Option, mit der die Festschreibungsnachrichten für den Autor aus allen Zweigen protokolliert werden , nicht nur aus der aktuellen?

Mit anderen Worten, kann git eine umgekehrte sortierte (nach Datum / Uhrzeit) Sequenz aller Commits im Repository erstellen und die Protokollinformationen aus dieser Sequenz extrahieren?

Gelöst: (kopiert aus dem Kommentar unten, der sonst versteckt ist)

Das Problem war, dass ich ein Repository und zwei Klone habe, um gleichzeitig an zwei Zweigen zu arbeiten. Ich habe die Änderungen in das Ursprungs-Repository übertragen, aber vergessen, die Änderungen in das geklonte Repository abzurufen. Auf diese Weise schien --alles nicht zu funktionieren, wenn es für das geklonte Repository verwendet wurde.

pepr
quelle
Vermutlich können Sie dafür ein Shell-Skript schreiben: git logakzeptiert committishals erstes Argument: git log mybranch(und listet alle Zweige auf, mit denen Sie verzweigen git branch).
Alexander Pavlov
@ AlexanderPavlov: Ich verstehe wahrscheinlich nicht. Was ist das committish? Ist es möglich, die Informationen über einen Git-Befehl abzurufen?
Pepr
1
Ich bekomme Commits von allen Filialen, nicht nur von der aktuellen? Dies wird erwartet, da Sie angeben --all. Ihr Befehl ist korrekt
CharlesB
1
@AlexanderPavlov: Kümmere dich nicht um das git rev-listParsen, git log --allist OK.
CharlesB
1
@CharlesB: Das habe ich mir überlegt --all, aber es funktioniert anscheinend nicht so für mich. Ich verstehe die Erklärung der Hilfe nicht: Stellen Sie sich vor, als wären alle Refs in refs/der Befehlszeile als aufgeführt <commit>.
Pepr

Antworten:

185

Ihr Befehl ist richtig, da Sie den --allSchalter verwenden, der alle Commits aus allen Zweigen gibt. Um die Frage in Ihrem Kommentar zu beantworten, funktioniert es auch in nackten Repositories.

CharlesB
quelle
64

Anstelle von --allIhnen möchten Sie möglicherweise verwenden --branches, da --allauch refs/tagsund enthält refs/remotes.

Gert Hengeveld
quelle