Wie kann ich die Autorennamen eines bestimmten Ordners auflisten, der von Git versioniert ist?
Ich sehe, dass ich es kann git blame eine Datei und liste den Autor jeder Zeile auf, aber ich kann das nicht für einen Ordner tun, und ich möchte auch nur eine eindeutige Liste (jeder Autor wird nur einmal aufgeführt)
Ich denke, Sie sollten dafür ein Shell-Skript schreiben, mit for-loop, pipe, grep, sort, uniq, etc. Außerdem zeigt git Blame nicht alle Autoren, sondern nur die letzten Modifikatoren, ich denke, Sie sollten es tun das mit git log.
– nicky_zs
17. Juli 2014 um 15:45 Uhr
ojdo
Eigentlich gibt es dafür einen nativen Git-Befehl, git shortlog:
git shortlog -n -s -- myfolder
wird eine Liste von Mitwirkenden geben, die Commits erstellt haben, die berührt haben myfolder. Möglichkeit -s bedeutet Zusammenfassung und zeigt nur die Anzahl der Commits pro Mitwirkendem an. Ohne es listet der Befehl die Commit-Meldungszusammenfassungen (1. Zeile) pro Autor auf. Möglichkeit -n sortiert die Autoren nach der Anzahl der Commits (von den meisten bis zu den wenigsten) statt alphabetisch.
Und nur für den Fall, dass Sie nicht auf einen losen gestoßen sind -- in einem git-Befehl noch: es ist eine Trennoption, um zu markieren, dass das Folgende kein a sein kann <revspec> (Bereich von Commits), aber nur a <pathspec> (Datei- und Ordnernamen). Das heißt: wenn man das weglassen würde -- und hatte zufällig einen Zweig oder Tag benannt Mein Ordnerder Befehl git shortlog -n -s myfolder möchten nicht nach dem Verzeichnis filternMein Ordneraber stattdessen Filtern Sie nach dem Verlauf des Zweigs oder Tags “Mein Ordner”. Dieses Trennzeichen ist daher in einer Reihe von Git-Befehlen nützlich (und notwendig), wie z log oder checkout, wenn Sie sich vergewissern möchten, ob Sie eine Revision (commit, branch, tag) oder einen Pfad (Ordner- oder Dateiname) angeben. Und natürlich hat diese Seite bereits eine Frage dazu.
Was macht -- tun?
– Aaron Franke
7. Dezember 2019 um 4:46 Uhr
git shortlog akzeptiert a <revision range> Streit. Wenn myfolder versehentlich der Name eines Tags oder Branches wäre, wäre das Shortlog auf den Commit-Verlauf dieses Labels beschränkt. Das Trennzeichen -- wird von vielen Git-Befehlen verwendet, um anzugeben, dass das Folgende immer nur ein Datei- oder Verzeichnisname (eine Pfadangabe) sein darf, kein Befehl oder keine Revision.
– ojdo
9. Dezember 2019 um 8:21 Uhr
@AaronFranke danke der Nachfrage; jetzt habe ich das auch eingebaut -- Teil direkt in der Antwort und verknüpft mit der kanonischen Frage zu SO.
– ojdo
30. März 2020 um 7:58 Uhr
Basierend auf Die kürzestmögliche Ausgabe aus dem Git-Log, die Autor und Datum enthält
Ich denke, Sie sollten dafür ein Shell-Skript schreiben, mit for-loop, pipe, grep, sort, uniq, etc. Außerdem zeigt git Blame nicht alle Autoren, sondern nur die letzten Modifikatoren, ich denke, Sie sollten es tun das mit git log.
– nicky_zs
17. Juli 2014 um 15:45 Uhr