Bei der Verwendung git log
, wie kann ich durch den Benutzer filtern , so dass ich nur von diesem Nutzer verpflichtet sehen?
Bei der Verwendung git log
, wie kann ich durch den Benutzer filtern , so dass ich nur von diesem Nutzer verpflichtet sehen?
Antworten:
Dies funktioniert für beide git log
und gitk
- die zwei am häufigsten verwendeten Möglichkeiten der Geschichte sehen.
Sie müssen nicht den ganzen Namen verwenden:
git log --author="Jon"
wird einem Commit von "Jonathan Smith" entsprechen
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 --all
Sie 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 abgleichen, da Regex der zugrunde liegende Mechanismus für diesen Filter ist. Um Commits von Jonathan oder Adam aufzulisten, können Sie Folgendes tun:
git log --author="\(Adam\)\|\(Jon\)"
Um Commits eines bestimmten Autors oder einer Gruppe von Autoren mit regulären Ausdrücken auszuschließen, wie in dieser Frage angegeben , können Sie in Kombination mit dem Schalter einen negativen Lookahead verwenden--perl-regexp
:
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 verfasste) Commits ausschließen möchten, ersetzen Sie diese %an
durch %cn
. Weitere Details dazu finden Sie in meinem Blog-Beitrag hier: http://dymitruk.com/blog/2012/07/18/filtering-by-author-name/
gitk
, die Commits der Eltern von anderen Autoren wegzulassen? (Sie werden mit weißen Kreisen angezeigt.) Im Gegensatz dazu werden git log --graph
die übergeordneten Commits nicht angezeigt. Es werden nur die Commits des angegebenen Autors angezeigt. Ich würde gerne die gleiche Ausgabe in sehen gitk
. (Bereits überprüfte Einstellungen und Ansicht bearbeiten - konnte nichts Nützliches finden.)
git log --author="that user"
Auf Github gibt es auch einen geheimen Weg ...
Sie können Commits nach Autor in der Commit-Ansicht filtern, indem Sie param anhängen ?author=github_handle
. Der Link https://github.com/dynjs/dynjs/commits/master?author=jingweno zeigt beispielsweise eine Liste der 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" eingeben, gefolgt von Enter. Geben Sie einige Male "n" ein, um zum entsprechenden Abschnitt zu gelangen, der Folgendes anzeigt:
git log --author="username"
wie schon vorgeschlagen.
Beachten Sie, dass Sie dadurch den Autor der Commits erhalten. In Git kann der Autor jedoch eine andere Person als der Committer sein (z. B. im Linux-Kernel, wenn Sie einen Patch als normaler Benutzer einreichen, wird er möglicherweise von einem anderen Administratorbenutzer festgeschrieben .) Siehe Unterschied zwischen Autor und Committer in Git? für mehr Details)
Meistens ist das, was man als Benutzer bezeichnet, sowohl der Committer als auch der Autor.
Weitere Details abrufen - (Hier wird %an
auf den Autor verwiesen)
Benutze das :-
git log --author="username" --pretty=format:"%h - %an, %ar : %s"
%ae
anstelle von %an
(das den Namen gab) verwendet
--author
sucht tatsächlich nach dem Namen des Autors und nicht nach dem Namen des Committers. Ich würde "username"
zum Autor wechseln
cat | git log --author="authorName" > author_commits_details.txt
Dies gibt Ihre Commits im Textformat.
cat |
?
Wenn Sie Ihre eigenen Commits filtern möchten:
git log --author="<$(git config user.email)>"
Probieren Sie dieses Tool https://github.com/kamranahmedse/git-standup aus
```bash
$ git standup [-a <author name>]
[-w <weekstart-weekend>]
[-m <max-dir-depth>]
[-f]
[-L]
[-d <days-ago>]
[-D <date-format>]
[-g]
[-h]
```
Unten finden Sie die Beschreibung für jedes der 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
Da die andere Frage (möglicherweise zu Unrecht?) Gesperrt war, werde ich dies hier einfügen:
Autoren mit ihren Commit-Zählungen anzeigen:
git shortlog -nse
Hier finden Sie alle Commits für einen bestimmten USERNAME:
git log --author=USERNAME --oneline | awk '{print $1}' | xargs git show
Zeigen Sie n Anzahl der Protokolle 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
Um die letzten 10 Commits von Frank zu zeigen:
l 10 frank
So zeigen Sie die letzten 20 Commits an:
l 20
Bei Verwendung von GitHub:
Die Liste wird im folgenden Format angezeigt
branch_x: < comment>
author_name committed 2 days ago
Mein Fall: Ich verwende den Quellbaum und habe die folgenden Schritte ausgeführt:
CRL+3
Es gibt jedoch viele nützliche Antworten. 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 insgesamt 5 Commits von <Author Name>
unter dem aktuellen Zweig ausgeführt. Sie können --all
die Suche auch überall (in allen Zweigen) des Git-Repositorys erzwingen .
Ein Haken: git versucht intern, eine Eingabe <author name>
mit dem Namen und der E-Mail-Adresse des Autors in der git-Datenbank abzugleichen. Es wird zwischen Groß- und Kleinschreibung unterschieden .
github
?