Yalnızca bir kullanıcının taahhütlerinin git günlüğünü nasıl görüntüleyebilirim?


Yanıtlar:


1715

Bu ikisi için çalışır git logve 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.

--allYalnı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 bashve 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 %anile %cn. Bununla ilgili daha fazla ayrıntı buradaki blog yazımda : http://dymitruk.com/blog/2012/07/18/filtering-by-author-name/


9
Tam tersini yapmanın bir yolu var mı? De ki - Jon dışındaki tüm taahhütleri görmek istiyorum.
Ian Robinson

4
Git yardım günlüğü "Jon" için düzenli bir ifadedir bu yüzden oldukça kolay olmalı
sumek

2
git log --format =% an | egrep -v 'Jon *' | xargs -n 1 git log -1
Adam Dymitruk

4
gitkEbeveynin diğer yazarlardan taahhütte bulunmasının bir yolu var mı? (Beyaz dairelerle gösterilirler.) Bunun aksine, git log --graphebeveynin 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ı.)
ADTC

2
Bu büyük / küçük harfe duyarlıdır
Chiel ten Brinke


44

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


1
dalları görmek için herhangi bir yolu var mı? taahhüt / gibi bir şey?
whizcreed

Bunu nasıl buldun? Başka hangi bayraklar desteklenir?
Woodrow Barlow

1
pro.mean'ın bu arayüzle nasıl yapılacağı yanıtı: stackoverflow.com/a/39123694/1225617
Adam Millerchip

Bu yanıtı tercih etmiyorum çünkü soru bir yazılımla ilgiliydi ve belirli bir hizmetle ilgili değildi.
Valerio Bozz

Soru oldu sadece ne olursa olsun teknoloji - git günlüğünü görüntülemek nasıl. Yani bu cevap faturaya iyi uyuyor.
slott

31
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.


21
@James Bence buradaki olumsuzluklarınız garanti altında değil. Sadece onu unutması durumunda komut satırından nasıl arayacağını öğretmeye çalışıyordum. Bence sadece RTFM diyen bir kişi için beni yanıltıyorsun, ama cevabımı yanıta ekledim.
ustun

11
Olumsuzluk değil. Buraya insanlar tavsiye istiyorlar ve birçok insan RTFM'nin bazı varyantlarına yanıt vermek istiyor. Topluma kötü gelir.
James

11
@ James burada ustun ile anlaşmak zorundayım. O did soruya cevap, ve onun diğer git ilişkili sorulara cevap bulmak açısından yararlıdır cevap bulmak için bir strateji sundu.
Peter

4
Bunun kadar siyah ve beyaz olduğunu düşünmüyorum. Şimdi, insanlara kendileri için bir şeyler yapmaları konusunda eğitmemiz gerektiğini söyleyenlere katılıyorum - bu iyi bir fikir. Unstun'un biraz yanlış gittiği yerlerde varsayımlar yapmak a) OP'nin bir man sayfasını nasıl arayacağını bildiğini ve daha da önemlisi b) OP'nin 'yazar' aramayı bildiğini. 'Committer', 'name' ya da başka bir şey aramış olabilirler.
John Hunt

6
Haklısın, aramanın ne anlama geldiğini ve o sırada nasıl yapıldığını açıklamak hiç aklıma gelmedi. Bir nevi varsayıldı. Metni biraz düzeltme.
ustun

23

Daha fazla ayrıntı çekmek için - (Burada %anyazarı ifade eder)

Bunu kullan :-

git log --author="username" --pretty=format:"%h - %an, %ar : %s"

E-posta adreslerini (Ad verdi) %aeyerine biçimi kullanın%an
MarkHu

--authoraslında yazar adına göre arama yapar, değiştirici adına göre değil. "username"Yazar olarak değiştiririm
Algoritmatik

17
cat | git log --author="authorName" > author_commits_details.txt

Bu, taahhütlerinizi metin formatında verir.


20
Amacı nedir cat |?
Keith Thompson

1
@KeithThompson Bir fareyi kovalamak için.
nvd

14

Kendi taahhütlerinizi filtrelemek istiyorsanız:

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

1
Ayrıca tırnak işaretleri ve parantezler olmadan da çalışır (en azından git bash ve ubuntu bash'da).
Lavamantis

12

Kullanıcı adının bir kısmını kullanarak bunu biraz kısaltabilirsiniz:

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

11

bu aracı deneyin https://github.com/kamranahmedse/git-standup

kullanım

```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

6

Diğer soru (muhtemelen yanlış?) Kilitlendiğinden, bunu buraya koyacağım:

yazarları taahhüt sayılarıyla göster:

git shortlog -nse

belirli USERNAME için tüm taahhütleri bul:

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

5

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


4

GitHub kullanıyorsanız:

  • şubeye git
  • taahhütlere tıklayın

listeyi aşağıdaki formatta gösterecektir

branch_x: < comment> 
author_name committed 2 days ago
  • bireysel yazarın taahhüdünü görmek; yazar_adı üzerine tıkladığınızda , o daldaki yazarın tüm taahhütlerini görebilirsiniz

2
Bu bir çok tıklama ve barındırılan git repo olduğunu varsayar. Yukarıdaki gibi birçok CLI cevap vermez.
lacostenycoder

1
@lacostenycoder ama yararlı bilgiler, özellikle GitHub'da çok fazla git projesi var!
Adam Millerchip

2

= Veya "boşluk" kullanabilirsiniz. Örneğin, aşağıdaki iki komut aynı döndürür

git log --author="Developer1"

git log --author "Developer1"

1

Benim durumum: Kaynak ağacı kullanıyorum, aşağıdaki adımları izledim:

  1. preslenmiş CRL+3
  2. Değişen açılır yazarlar
  3. "Vinod Kumar" adını yazdı

resim açıklamasını buraya girin


1

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 --allher 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 .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.