Cuando lo uso git log
, ¿cómo puedo filtrar por usuario para ver solo las confirmaciones de ese usuario?
Cuando lo uso git log
, ¿cómo puedo filtrar por usuario para ver solo las confirmaciones de ese usuario?
Respuestas:
Esto funciona para ambos git log
y gitk
- las 2 formas más comunes de ver el historial.
No necesita usar el nombre completo:
git log --author="Jon"
coincidirá con un compromiso realizado por "Jonathan Smith"
git log --author=Jon
y
git log --author=Smith
También funcionaría. Las comillas son opcionales si no necesita espacios.
Agregue --all
si tiene la intención de buscar todas las ramas y no solo los antepasados del commit actual en su repositorio.
También puede coincidir fácilmente en varios autores, ya que la expresión regular es el mecanismo subyacente para este filtro. Entonces, para enumerar las confirmaciones de Jonathan o Adam, puede hacer esto:
git log --author="\(Adam\)\|\(Jon\)"
Para excluir las confirmaciones de un autor en particular o un conjunto de autores que usan expresiones regulares como se señala en esta pregunta , puede usar una búsqueda anticipada negativa en combinación con el --perl-regexp
interruptor:
git log --author='^(?!Adam|Jon).*$' --perl-regexp
Alternativamente, puede excluir confirmaciones creadas por Adam usando bash
y canalizando:
git log --format='%H %an' |
grep -v Adam |
cut -d ' ' -f1 |
xargs -n1 git log -1
Si desea excluir los compromisos cometidos (pero no necesariamente creados) por Adam, reemplace %an
con %cn
. Más detalles sobre esto están en mi blog aquí: http://dymitruk.com/blog/2012/07/18/filtering-by-author-name/
gitk
dejar de lado los compromisos de los padres de otros autores? (Se muestran con círculos blancos). En contraste, git log --graph
no muestra los compromisos del padre; solo muestra los compromisos del autor dado. Me encantaría ver la misma salida en gitk
. (Ya verifiqué Preferencias y Vista de edición, no pude encontrar nada útil)
git log --author="that user"
En github también hay un camino secreto ...
Puede filtrar confirmaciones por autor en la vista de confirmación agregando parámetros ?author=github_handle
. Por ejemplo, el enlace https://github.com/dynjs/dynjs/commits/master?author=jingweno muestra una lista de confirmaciones para el proyecto Dynjs
git help log
le da la página de manual de git log. Busque "author" allí presionando / y luego escribiendo "author", seguido de Enter. Escriba "n" varias veces para llegar a la sección correspondiente, que revela:
git log --author="username"
como ya se sugirió.
Tenga en cuenta que esto le dará el autor de los commits, pero en Git, el autor puede ser alguien diferente del committer (por ejemplo, en el kernel de Linux, si envía un parche como usuario ordinario, podría ser cometido por otro usuario administrativo .) ¿Ves la diferencia entre autor y committer en Git? para más detalles)
Sin embargo, la mayoría de las veces, a lo que uno se refiere como el usuario es tanto el que confirma como el autor.
Para obtener más detalles - (Aquí se %an
refiere al autor)
Utilizar este :-
git log --author="username" --pretty=format:"%h - %an, %ar : %s"
%ae
lugar de %an
(que dio nombre)
--author
en realidad busca por el nombre del autor y no por el nombre del confirmador. Me gustaría cambiar "username"
a autor
cat | git log --author="authorName" > author_commits_details.txt
Esto le da a sus confirmaciones en formato de texto.
cat |
?
Si quieres filtrar tus propios commits:
git log --author="<$(git config user.email)>"
prueba esta herramienta 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]
```
A continuación se muestra la descripción de cada una de las banderas.
- `-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
Dado que la otra pregunta fue bloqueada (¿posiblemente erróneamente?), Simplemente pondré esto aquí:
mostrar autores con sus recuentos de compromiso:
git shortlog -nse
encuentre todos los commits para USERNAME específico:
git log --author=USERNAME --oneline | awk '{print $1}' | xargs git show
Muestre un número n de registros para x usuarios en color agregando este pequeño fragmento en su archivo .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
Para mostrar los últimos 10 commits de Frank:
l 10 frank
Para mostrar los últimos 20 compromisos de cualquier persona:
l 20
Si usa GitHub:
mostrará la lista en el siguiente formato
branch_x: < comment>
author_name committed 2 days ago
Puede usar ya sea = o "espacio". Por ejemplo, seguir dos comandos devuelve lo mismo
git log --author="Developer1"
git log --author "Developer1"
Mi caso: estoy usando el árbol de origen, seguí los siguientes pasos:
CRL+3
Aunque, hay muchas respuestas útiles. Mientras que, solo para agregar otra forma de hacerlo. También puedes usar
git shortlog --author="<author name>" --format="%h %s"
Mostrará la salida de la manera agrupada:
<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
Aquí, se realizan un total de 5 confirmaciones por <Author Name>
debajo de la rama actual. Mientras que, también puede usar --all
para forzar la búsqueda en todas partes (todas las ramas) en el repositorio de git.
Una trampa: git trata internamente de hacer coincidir una entrada <author name>
con el nombre y el correo electrónico del autor en la base de datos de git. Es sensible a mayúsculas y minúsculas .
github
?