Wie kann ich bei Verwendung von git log
nach Benutzer filtern, sodass nur Commits von diesem Benutzer angezeigt werden?
Dies funktioniert sowohl für git log
als auch für gitk
- die beiden häufigsten Arten, den Verlauf anzuzeigen. Sie müssen nicht den ganzen Namen verwenden.
git log --author="Jon"
passt zu einem Commit von "Jonathan Smith"
git log --author=Jon
und
git log --author=Smith
würde auch funktionieren. Die Anführungszeichen sind optional, wenn Sie keine Leerzeichen benötigen.
Fügen Sie --all
hinzu, wenn Sie alle Zweige durchsuchen möchten und nicht nur die Vorfahren des aktuellen Commits in Ihrem Repo.
Sie können auch problemlos mehrere Autoren zuordnen, da Regex der zugrunde liegende Mechanismus für diesen Filter ist. So können Sie Commits von Jonathan oder Adam auflisten:
git log --author="\(Adam\)\|\(Jon\)"
Um Commits eines bestimmten Autors oder einer Gruppe von Autoren mit regulären Ausdrücken wie angegeben auszuschließen in dieser Frage , können Sie ein negatives Vorzeichen in Kombination mit dem Schalter --Perl-regexp
verwenden:
git log --author='^(?!Adam|Jon).*$' --Perl-regexp
Alternativ können Sie von Adam erstellte Commits mit bash
und Piping ausschließen:
git log --format='%H %an' |
grep -v Adam |
cut -d ' ' -f1 |
xargs -n1 git log -1
Wenn Sie von Adam festgeschriebene (aber nicht unbedingt erstellte) Commits ausschließen möchten, ersetzen Sie %an
durch %cn
. Weitere Details dazu finden Sie in meinem Blog-Beitrag hier: http://dymitruk.com/blog/2012/07/18/filtering-by-author-name/
git log --author="that user"
Auf Github gibt es auch einen geheimen Weg ...
Sie können Commits in der Commit-Ansicht nach Autor filtern, indem Sie den Parameter ?author=github_handle
anhängen. Zum Beispiel zeigt der Link https://github.com/dynjs/dynjs/commits/master?author=jingweno eine Liste von Commits für das Dynjs-Projekt
git help log
gibt dir die manpage von git log. Suchen Sie dort nach "author", indem Sie/drücken und dann "author" gefolgt von der Eingabetaste eingeben. Tippe ein paar Mal "n", um zum entsprechenden Abschnitt zu gelangen, in dem Folgendes angezeigt wird:
git log --author="username"
wie schon vorgeschlagen.
Beachten Sie, dass Sie auf diese Weise den Autor der Commits erhalten. In Git kann der Autor jedoch auch ein anderer Autor als der Committer sein (wenn Sie beispielsweise im Linux-Kernel einen Patch als normaler Benutzer einreichen, wird dieser möglicherweise von einem anderen Benutzer mit Verwaltungsaufgaben übernommen) .) Siehe nterschied zwischen Autor und Committer in Git? für weitere Details)
Meistens ist das, was man als Benutzer bezeichnet, sowohl der Urheber als auch der Urheber.
Weitere Details abrufen - (hier bezieht sich %an
auf den Autor)
Benutze das :-
git log --author="username" --pretty=format:"%h - %an, %ar : %s"
cat | git log --author="authorName" > author_commits_details.txt
Dies gibt Ihre Commits im Textformat.
Wenn Sie Ihre eigenen Commits filtern möchten:
git log --author="<$(git config user.email)>"
Sie können dies sogar ein wenig abkürzen, indem Sie einfach einen Teil des Benutzernamens verwenden:
git log --author=mr #if you're looking for mrfoobar's commits
probieren Sie dieses Tool aus https://github.com/kamranahmedse/git-standup
```bash
$ git standup [-a <author name>]
[-w <weekstart-weekend>]
[-m <max-dir-depth>]
[-f]
[-L]
[-d <days-ago>]
[-D <date-format>]
[-g]
[-h]
```
Nachfolgend finden Sie die Beschreibung der einzelnen Flags
- `-a` - Specify author to restrict search to (name or email)
- `-w` - Specify weekday range to limit search to (e.g. `git standup -w Sun-THU`)
- `-m` - Specify the depth of recursive directory search
- `-L` - Toggle inclusion of symbolic links in recursive directory search
- `-d` - Specify the number of days back to include
- `-D` - Specify the date format for "git log" (default: relative)
- `-h` - Display the help screen
- `-g` - Show if commit is GPG signed or not
- `-f` - Fetch the latest commits beforehand
Zeigen Sie n Anzahl von Protokollen für x Benutzer in Farbe an, indem Sie dieses kleine Snippet in Ihre .bashrc-Datei einfügen.
gitlog() {
if [ "$1" ] && [ "$2" ]; then
git log --pretty=format:"%h%x09 %C(cyan)%an%x09 %Creset%ad%x09 %Cgreen%s" --date-order -n "$1" --author="$2"
Elif [ "$1" ]; then
git log --pretty=format:"%h%x09 %C(cyan)%an%x09 %Creset%ad%x09 %Cgreen%s" --date-order -n "$1"
else
git log --pretty=format:"%h%x09 %C(cyan)%an%x09 %Creset%ad%x09 %Cgreen%s" --date-order
fi
}
alias l=gitlog
So zeigen Sie die letzten 10 Commits von Frank:
l 10 frank
So zeigen Sie die letzten 20 Commits von einer beliebigen Person an:
l 20
Da die andere Frage (möglicherweise zu Unrecht?) Gesperrt war, werde ich dies hier setzen:
Autoren mit ihren Festschreibungszählungen anzeigen:
git shortlog -nse
Finde alle Commits für einen bestimmten USERNAME:
git log --author=USERNAME --oneline | awk '{print $1}' | xargs git show
Wenn Sie GitHub verwenden:
die Liste wird im folgenden Format angezeigt
branch_x: < comment>
author_name committed 2 days ago
Sie können entweder = oder "Leerzeichen" verwenden. Zum Beispiel geben die folgenden zwei Befehle dasselbe zurück
git log --author="Developer1"
git log --author "Developer1"
Es gibt jedoch viele nützliche Antworten. Wohingegen, nur um einen anderen Weg hinzuzufügen. Sie können auch verwenden
git shortlog --author="<author name>" --format="%h %s"
Die Ausgabe wird gruppiert angezeigt:
<Author Name> (5):
4da3975f dependencies upgraded
49172445 runtime dependencies resolved
bff3e127 user-service, kratos, and guava dependencies upgraded
414b6f1e dropwizard :- service, rmq and db-sharding depedencies upgraded
a96af8d3 older dependecies removed
Hier werden von <Author Name>
im aktuellen Zweig insgesamt 5 Commits durchgeführt. Sie können --all
auch verwenden, um die Suche überall (in allen Zweigen) im Git-Repository zu erzwingen.
One catch: git versucht intern, eine Eingabe <author name>
mit dem Namen und der E-Mail des Autors in der git-Datenbank abzugleichen. Es wird zwischen Groß- und Kleinschreibung unterschieden .