it-swarm.com.de

Wie kann ich ein Git-Protokoll nur der Commits eines Benutzers anzeigen?

Wie kann ich bei Verwendung von git log nach Benutzer filtern, sodass nur Commits von diesem Benutzer angezeigt werden?

1130
markdorison

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/

1537
Adam Dymitruk
git log --author="that user"
44
wilhelmtell

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

41
slott
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.

30
ustun

Weitere Details abrufen - (hier bezieht sich %an auf den Autor)

Benutze das :-

git log --author="username" --pretty=format:"%h - %an, %ar : %s"
19
cat | git log --author="authorName" > author_commits_details.txt

Dies gibt Ihre Commits im Textformat.

15
Johnsa Philip

Wenn Sie Ihre eigenen Commits filtern möchten:

git log --author="<$(git config user.email)>"
11

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
11
three

probieren Sie dieses Tool aus https://github.com/kamranahmedse/git-standup

Verwendungszweck

```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
7
InsaneBot

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

4
Frank Forte

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
4
sjas

Wenn Sie GitHub verwenden:

  • gehe zur Filiale
  • klicken Sie auf Commits

die Liste wird im folgenden Format angezeigt

branch_x: < comment> 
author_name committed 2 days ago
  • das Commit des einzelnen Autors sehen; Klicken Sie auf author_name und dort können Sie alle Commits dieses Autors in diesem Zweig sehen
3
diEcho

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"
1
harshainfo

Mein Fall: Ich verwende den Quelltextbaum und folge den folgenden Schritten:

  1. CRL+3 gedrückt
  2. Geänderte Dropdown-Autoren
  3. Schreibte den Namen "Vinod Kumar"

enter image description here

0
Vinod Kumar

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 .

0
psyco