Git-Protokoll ohne Merge-Commits anzeigen

89

Ich versuche, von einem bestimmten Benutzer vorgenommene Commits anzuzeigen, und möchte alle vom Benutzer vorgenommenen Zusammenführungen aus der Ausgabe entfernen. Wie kann ich das machen?

Ich kann die Commits eines Benutzers mit überprüfen git log --author=<name>, aber die Zusammenführungs-Commits in der Ausgabe nicht entfernen.

PS: Zusammenführungskonflikte treten im Workflow des betreffenden Repos nicht auf. Alle Zweige werden vor dem Zusammenführen in den Master neu basiert, sodass die Zusammenführungs-Commits sicher aus der Ausgabe entfernt werden können. In ähnlicher Weise werden zwei Feature-Zweige nicht miteinander zusammengeführt und ausgelöst die Möglichkeit.

mu 無
quelle
2
Was wäre, wenn die Fusion einen Konflikt hätte und er ihn lösen müsste?
Joe Phillips
2
@JoePhilllips Dies passiert im Workflow des betreffenden Repos nicht. Alle Zweige werden vor dem Zusammenführen mit dem Master neu basiert.
mu 無
7
Verwenden Siegit log --no-merges
0xAX
1
@ 0xAX Kannst du das als Antwort posten, ich werde es akzeptieren.
mu 無

Antworten:

138

verwenden

git log --author=<name> --no-merges

Zusätzlich kann die --first-parentOption ein nützliches Ergebnis für Sie liefern:

--first-parent Folgen Sie nur dem ersten übergeordneten Commit, wenn ein Merge-Commit angezeigt wird. Diese Option bietet einen besseren Überblick, wenn Sie die Entwicklung eines bestimmten Themenzweigs anzeigen, da beim Zusammenführen in einen Themenzweig in der Regel nur von Zeit zu Zeit eine Aktualisierung auf den Upstream vorgenommen wird. Mit dieser Option können Sie die einzelnen eingebrachten Commits ignorieren Ihre Geschichte durch eine solche Verschmelzung. Kann nicht mit --bisect kombiniert werden.

0xAX
quelle
noch schöner mit --pretty=format:"%h%x09%an%x09%ad%x09%s"
k1eran
1
@ k1eran dies schneidet den Festschreibungskörper ab (vorausgesetzt, es gibt einen)
Erythros
1
@Erythros verstanden, und ich finde es nützlich, eine kurze lesbare Zusammenfassung der Commits zu erhalten.
k1eran
Oder einschließlich Farben und log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --first-parent
Grafiken
19

Sie können Zusammenführungen auslassen mit --no-merges:

git log --no-merges --author=<name>

Weitere Informationen finden Sie in der Git-Log-Manpage .

Morxa
quelle
2
Dies schließt nur die Zusammenführungs-Commits aus. Die normalen Commits in diesem Upstream-Zweig sind jedoch weiterhin sichtbar.
Shiplu Mokaddim