Kullanırken git log
, yalnızca bu kullanıcıdan gelen taahhütleri görebilmek için kullanıcıya göre nasıl filtreleyebilirim?
Kullanırken git log
, yalnızca bu kullanıcıdan gelen taahhütleri görebilmek için kullanıcıya göre nasıl filtreleyebilirim?
Yanıtlar:
Bu ikisi için çalışır git log
ve gitk
- görüntüleme geçmişi 2 en yaygın yolu.
Adın tamamını kullanmanıza gerek yoktur:
git log --author="Jon"
"Jonathan Smith" tarafından yapılan bir taahhütle eşleşecek
git log --author=Jon
ve
git log --author=Smith
de işe yarar. Boşluğa ihtiyacınız yoksa tırnak işaretleri isteğe bağlıdır.
--all
Yalnızca mevcut komitenin repolarınızdaki atalarını değil, tüm şubeleri aramak istiyorsanız ekleyin .
Regex bu filtrenin altında yatan mekanizma olduğundan, birden çok yazarla kolayca eşleştirebilirsiniz. Jonathan veya Adam'ın taahhütlerini listelemek için şunları yapabilirsiniz:
git log --author="\(Adam\)\|\(Jon\)"
Bu soruda belirtildiği gibi düzenli ifadeler kullanan belirli bir yazar veya yazarlar tarafından yapılan taahhütleri hariç tutmak için, anahtarla birlikte negatif bir ileriye bakma kullanabilirsiniz --perl-regexp
:
git log --author='^(?!Adam|Jon).*$' --perl-regexp
Alternatif olarak, Adam tarafından yazılan taahhütleri kullanarak bash
ve borularla hariç tutabilirsiniz :
git log --format='%H %an' |
grep -v Adam |
cut -d ' ' -f1 |
xargs -n1 git log -1
Eğer Adam tarafından kaydedilmesini işlediği (şart olmamakla birlikte kaleme) dışarıda bırakmak isterseniz, değiştirin %an
ile %cn
. Bununla ilgili daha fazla ayrıntı buradaki blog yazımda : http://dymitruk.com/blog/2012/07/18/filtering-by-author-name/
gitk
Ebeveynin diğer yazarlardan taahhütte bulunmasının bir yolu var mı? (Beyaz dairelerle gösterilirler.) Bunun aksine, git log --graph
ebeveynin taahhütlerini göstermez; yalnızca verilen yazarın taahhütlerini gösterir. Aynı çıktıyı görmek isterim gitk
. (Önceden işaretlenmiş Tercihler ve Görünümü Düzenle - yararlı bir şey bulamadı.)
git log --author="that user"
Github'da gizli bir yol da var ...
Taahhüt görünümünde taahhütleri yazara göre param ekleyerek filtreleyebilirsiniz ?author=github_handle
. Örneğin, https://github.com/dynjs/dynjs/commits/master?author=jingweno bağlantısı Dynjs projesine verilen taahhütlerin bir listesini gösterir
git help log
size git log manpageini verir. Orada / yazarına ve ardından "author" yazıp Enter tuşuna basarak "yazar" ı arayın. İlgili bölüme ulaşmak için birkaç kez "n" yazın;
git log --author="username"
daha önce önerildiği gibi.
Bunun size taahhütlerin yazarını vereceğini unutmayın, ancak Git'te yazar, değiştirenden farklı biri olabilir (örneğin Linux çekirdeğinde, normal bir kullanıcı olarak bir yama gönderirseniz, başka bir yönetici kullanıcı tarafından işlenebilir .) Bkz Git'te yazar ve committer arasındaki Fark? daha fazla ayrıntı için)
Çoğu zaman, bir kullanıcının kullanıcı olarak ifade ettiği şey, hem önder hem de yazardır.
Daha fazla ayrıntı çekmek için - (Burada %an
yazarı ifade eder)
Bunu kullan :-
git log --author="username" --pretty=format:"%h - %an, %ar : %s"
%ae
yerine biçimi kullanın%an
--author
aslında yazar adına göre arama yapar, değiştirici adına göre değil. "username"
Yazar olarak değiştiririm
cat | git log --author="authorName" > author_commits_details.txt
Bu, taahhütlerinizi metin formatında verir.
cat |
?
Kendi taahhütlerinizi filtrelemek istiyorsanız:
git log --author="<$(git config user.email)>"
bu aracı deneyin 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şağıda bayrakların her biri için açıklama bulunmaktadır
- `-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
Bu küçük snippet'i .bashrc dosyanıza ekleyerek x kullanıcısı için n günlük sayısını renkli olarak göster.
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
Frank'in son 10 taahhüdünü göstermek için:
l 10 frank
Son 20 taahhüdü herkes tarafından göstermek için:
l 20
GitHub kullanıyorsanız:
listeyi aşağıdaki formatta gösterecektir
branch_x: < comment>
author_name committed 2 days ago
= Veya "boşluk" kullanabilirsiniz. Örneğin, aşağıdaki iki komut aynı döndürür
git log --author="Developer1"
git log --author "Developer1"
Benim durumum: Kaynak ağacı kullanıyorum, aşağıdaki adımları izledim:
CRL+3
Bununla birlikte, birçok yararlı cevap var. Oysa, başka bir yol eklemek için. Ayrıca kullanabilirsiniz
git shortlog --author="<author name>" --format="%h %s"
Çıktıları gruplandırılmış bir şekilde gösterecektir:
<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
Burada <Author Name>
mevcut şube altında toplam 5 taahhüt yapılır . Oysa git deposundaki --all
her yerde (tüm şubeler) aramayı zorlamak için de kullanabilirsiniz .
Bir catch: git dahili olarak bir girdiyi <author name>
git veritabanındaki yazarın adı ve e- postasıyla eşleştirmeye çalışır . Büyük / küçük harfe duyarlıdır .
github
?