W git log
jaki sposób mogę filtrować według użytkownika, aby wyświetlać tylko zatwierdzenia od tego użytkownika?
W git log
jaki sposób mogę filtrować według użytkownika, aby wyświetlać tylko zatwierdzenia od tego użytkownika?
Odpowiedzi:
Działa to zarówno dla - jak git log
i gitk
2 najczęstszych sposobów przeglądania historii.
Nie musisz używać całej nazwy:
git log --author="Jon"
będzie pasować do zatwierdzenia dokonanego przez „Jonathana Smitha”
git log --author=Jon
i
git log --author=Smith
też by działał. Cytaty są opcjonalne, jeśli nie potrzebujesz spacji.
Dodaj, --all
jeśli zamierzasz przeszukać wszystkie gałęzie, a nie tylko przodków bieżącego zatwierdzenia w repozytorium.
Możesz także łatwo dopasować wielu autorów, ponieważ wyrażenie regularne jest podstawowym mechanizmem tego filtra. Aby wyświetlić listę zatwierdzeń Jonathana lub Adama, możesz to zrobić:
git log --author="\(Adam\)\|\(Jon\)"
Aby wykluczyć zatwierdzenia określonego autora lub zbioru autorów używających wyrażeń regularnych, jak wspomniano w tym pytaniu , możesz użyć negatywnego efektu w połączeniu z --perl-regexp
przełącznikiem:
git log --author='^(?!Adam|Jon).*$' --perl-regexp
Alternatywnie możesz wykluczyć zatwierdzenia autorstwa Adama, używając bash
i potokując:
git log --format='%H %an' |
grep -v Adam |
cut -d ' ' -f1 |
xargs -n1 git log -1
Jeśli chcesz wykluczyć zobowiązuje zaangażowani (ale niekoniecznie autorami), których autorem jest Adam, wymienić %an
z %cn
. Więcej informacji na ten temat znajduje się w moim blogu tutaj: http://dymitruk.com/blog/2012/07/18/filtering-by-author-name/
gitk
pominąć zobowiązania rodziców od innych autorów? (Są pokazane z białymi kółkami.) Natomiast git log --graph
nie pokazuje, że rodzic zatwierdza; pokazuje tylko zobowiązania autora. Chciałbym zobaczyć ten sam wynik w gitk
. (Już sprawdziłem Preferencje i Edytuj widok - nic nie znalazłem.)
git log --author="that user"
Na github istnieje również sekretny sposób ...
Możesz filtrować zatwierdzenia według autora w widoku zatwierdzenia, dołączając parametr ?author=github_handle
. Na przykład link https://github.com/dynjs/dynjs/commits/master?author=jingweno pokazuje listę zatwierdzeń do projektu Dynjs
git help log
daje ci stronę podręcznika git log. Wyszukaj „autora”, naciskając /, a następnie wpisując „autor”, a następnie Enter. Wpisz kilka razy „n”, aby przejść do odpowiedniej sekcji, która pokazuje:
git log --author="username"
jak już sugerowano.
Zauważ, że da ci to autora zatwierdzeń, ale w Git autorem może być ktoś inny niż osoba zatwierdzająca (na przykład w jądrze Linuksa, jeśli prześlesz łatkę jako zwykły użytkownik, może zostać popełniony przez innego użytkownika administracyjnego .) Zobacz Różnica między autorem a autorem w Git? po więcej szczegółów)
Przez większość czasu to, co określa się mianem użytkownika, jest zarówno autor, jak i autor.
Aby wyciągnąć więcej szczegółów - (tutaj %an
odnosi się do autora)
Użyj tego :-
git log --author="username" --pretty=format:"%h - %an, %ar : %s"
%ae
zamiast %an
(który dał nazwę.)
--author
faktycznie wyszukuje według nazwiska autora, a nie nazwiska osoby odpowiedzialnej. Chciałbym zmienić "username"
autorowi
cat | git log --author="authorName" > author_commits_details.txt
Daje to twoje zobowiązania w formacie tekstowym.
cat |
?
Jeśli chcesz filtrować własne zatwierdzenia:
git log --author="<$(git config user.email)>"
wypróbuj to narzędzie 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]
```
Poniżej znajduje się opis każdej flagi
- `-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
Pokaż n dzienników dla x użytkownika w kolorze, dodając ten mały fragment w pliku .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
Aby wyświetlić 10 ostatnich zatwierdzeń Franka:
l 10 frank
Aby wyświetlić 20 ostatnich zatwierdzeń przez kogokolwiek:
l 20
Jeśli używasz GitHub:
wyświetli listę w poniższym formacie
branch_x: < comment>
author_name committed 2 days ago
Możesz użyć = lub „spacja”. Na przykład następujące dwa polecenia zwracają to samo
git log --author="Developer1"
git log --author "Developer1"
Mój przypadek: korzystam z drzewa źródłowego, wykonałem następujące kroki:
CRL+3
Chociaż istnieje wiele przydatnych odpowiedzi. Natomiast po prostu dodać do tego inny sposób. Możesz także użyć
git shortlog --author="<author name>" --format="%h %s"
Wyświetli wynik w zgrupowany sposób:
<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
Tutaj <Author Name>
w ramach bieżącego oddziału wykonywanych jest łącznie 5 zatwierdzeń . Możesz także użyć --all
do wymuszenia wyszukiwania wszędzie (wszystkie gałęzie) w repozytorium git.
Jeden haczyk: git wewnętrznie próbuje dopasować dane wejściowe <author name>
do nazwiska i adresu e-mail autora w bazie danych git. To jest wielkość liter .
github
?