Durante l'utilizzo git log
, come posso filtrare per utente in modo da vedere solo i commit da quell'utente?
Durante l'utilizzo git log
, come posso filtrare per utente in modo da vedere solo i commit da quell'utente?
Risposte:
Funziona con entrambi git log
e gitk
- i 2 modi più comuni di visualizzare la cronologia.
Non è necessario utilizzare l'intero nome:
git log --author="Jon"
corrisponderà a un commit fatto da "Jonathan Smith"
git log --author=Jon
e
git log --author=Smith
funzionerebbe anche. Le virgolette sono facoltative se non hai bisogno di spazi.
Aggiungi --all
se intendi cercare in tutti i rami e non solo gli antenati del commit corrente nel tuo repository.
Puoi anche abbinare facilmente più autori poiché regex è il meccanismo sottostante per questo filtro. Quindi per elencare i commit di Jonathan o Adam, puoi fare questo:
git log --author="\(Adam\)\|\(Jon\)"
Per escludere i commit di un determinato autore o gruppo di autori che utilizzano espressioni regolari come indicato in questa domanda , è possibile utilizzare un lookahead negativo in combinazione con l' --perl-regexp
interruttore:
git log --author='^(?!Adam|Jon).*$' --perl-regexp
In alternativa, puoi escludere i commit creati da Adam usando bash
e piping:
git log --format='%H %an' |
grep -v Adam |
cut -d ' ' -f1 |
xargs -n1 git log -1
Se si desidera escludere i commit commessi (ma non necessariamente creati) da Adam, sostituire %an
con %cn
. Maggiori dettagli su questo sono nel mio post sul blog qui: http://dymitruk.com/blog/2012/07/18/filtering-by-author-name/
gitk
lasciare fuori il genitore si impegna da altri autori? (Sono mostrati con cerchi bianchi.) Al contrario, git log --graph
non mostra il commit dei genitori; mostra solo i commit dell'autore dato. Mi piacerebbe vedere lo stesso output in gitk
. (Già selezionato Preferenze e Modifica vista - impossibile trovare nulla di utile.)
git log --author="that user"
Su github c'è anche un modo segreto ...
È possibile filtrare i commit per autore nella vista commit aggiungendo il parametro ?author=github_handle
. Ad esempio, il link https://github.com/dynjs/dynjs/commits/master?author=jingweno mostra un elenco di commit al progetto Dynjs
git help log
ti dà la manpage di git log. Cerca "autore" lì premendo / e quindi digitando "autore", seguito da Invio. Digita "n" alcune volte per accedere alla sezione pertinente, che rivela:
git log --author="username"
come già suggerito.
Nota che questo ti darà l'autore dei commit, ma in Git, l'autore può essere qualcuno diverso dal committer (ad esempio nel kernel Linux, se invii una patch come un normale utente, potrebbe essere impegnata da un altro utente amministrativo .) Vedi la differenza tra autore e committer in Git? per ulteriori dettagli)
Il più delle volte, ciò a cui uno si riferisce come utente è sia il committer che l'autore.
Per ottenere maggiori dettagli - (Qui si %an
riferisce all'autore)
Usa questo :-
git log --author="username" --pretty=format:"%h - %an, %ar : %s"
%ae
invece di %an
(che ha dato il nome.)
--author
in realtà cerca per nome dell'autore e non per nome del committer. Vorrei cambiare "username"
autore
cat | git log --author="authorName" > author_commits_details.txt
Questo dà i tuoi commit in formato testo.
cat |
?
Se vuoi filtrare i tuoi commit:
git log --author="<$(git config user.email)>"
prova questo strumento 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]
```
Di seguito è la descrizione per ciascuna delle bandiere
- `-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
Mostra n numero di registri per x utente a colori aggiungendo questo piccolo frammento nel tuo file .bashrc.
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
Per mostrare gli ultimi 10 commit di Frank:
l 10 frank
Per mostrare gli ultimi 20 commit di chiunque:
l 20
Se si utilizza GitHub:
mostrerà l'elenco nel seguente formato
branch_x: < comment>
author_name committed 2 days ago
Puoi usare = = o "spazio". Ad esempio, seguire due comandi restituisce lo stesso
git log --author="Developer1"
git log --author "Developer1"
Il mio caso: sto usando l'albero dei sorgenti, ho seguito i seguenti passi:
CRL+3
Tuttavia, ci sono molte risposte utili. Considerando che, solo per aggiungere un altro modo ad esso. Puoi anche usare
git shortlog --author="<author name>" --format="%h %s"
Mostrerà l'output in modo raggruppato:
<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
Qui, <Author Name>
sotto il ramo corrente vengono eseguiti 5 commit . Considerando che, puoi anche usare --all
per forzare la ricerca ovunque (tutti i rami) nel repository git.
Unico problema: git tenta internamente di abbinare un input <author name>
con il nome e l'e-mail dell'autore nel database git. Fa distinzione tra maiuscole e minuscole .
github
?