Come posso visualizzare un log git di un solo commit dell’utente?

Quando si utilizza git log , come posso filtrare per utente in modo tale che io veda solo i commit da quell’utente?

Questo funziona sia per git log che per gitk , i 2 modi più comuni di cronologia di visualizzazione. Non è necessario utilizzare l’intero nome.

 git log --author="Jon" 

corrisponderà ad un commit fatto da “Jonathan Smith”

 git log --author=Jon 

e

 git log --author=Smith 

funzionerebbe anche Le virgolette sono opzionali se non hai bisogno di spazi.

Aggiungi --all se hai intenzione di cercare tutti i rami e non solo gli antenati del commit corrente nel tuo repository.

Puoi anche abbinare facilmente su più autori in quanto la 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 da un particolare autore o insieme di autori che usano le espressioni regolari come indicato in questa domanda , puoi usare un lookahead negativo in combinazione con l’ --perl-regexp :

 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 scritti) da Adam, sostituire %an con %cn . Maggiori dettagli su questo sono nel mio post del blog qui: http://dymitruk.com/blog/2012/07/18/filtering-by-author-name/

 git log --author="that user" 

Sul github c’è anche un modo segreto

Puoi filtrare i commit per autore nella vista del commit aggiungendo param ?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 pagina di manuale 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 (per esempio nel kernel di Linux, se invii una patch come utente ordinario, potrebbe essere impegnata da un altro utente amministrativo .) Vedi Differenza tra autore e committer in Git? per ulteriori dettagli)

Il più delle volte, ciò a cui si fa riferimento in quanto l’utente è sia il committer che l’autore.

Per ottenere maggiori dettagli – (Qui %an riferisce all’autore)

Usa questo :-

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

Questo dà il tuo impegno in formato di testo.

Puoi anche abbreviare questo un po ‘semplicemente usando parte del nome utente:

 git log --author=mr #if you're looking for mrfoobar's commits 

Se vuoi filtrare i tuoi commit:

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

prova questo strumento https://github.com/kamranahmedse/git-standup

uso

 ```bash $ git standup [-a ] [-w ] [-m ] [-f] [-L] [-d ] [-D ] [-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 (eg `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 

Dal momento che l’altra domanda era (forse erroneamente così?) Bloccata, metterò questo qui:

mostra agli autori i loro conteggi di commit:

 git shortlog -nse 

trova tutti i commit per lo USERNAME specifico:

 git log --author=USERNAME --oneline | awk '{print $1}' | xargs git show 

Se si utilizza GitHub:

  • vai al ramo
  • clicca su commit

mostrerà la lista in formato sotto

 branch_x: < comment> author_name committed 2 days ago 
  • vedere il commit dell’autore individuale; clicca su nome_autore e lì puoi vedere tutti i commit di quell’autore su quel ramo

Mostra n numero di log per l’utente x a colors aggiungendo questo piccolo frammento nel 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 nessuno:

l 20

Puoi usare o = o “spazio”. Ad esempio seguendo due comandi restituiscono lo stesso

 git log --author="Developer1" git log --author "Developer1"