Saat menggunakan git log
, bagaimana saya bisa memfilter menurut pengguna sehingga saya hanya melihat komitmen dari pengguna itu?
Saat menggunakan git log
, bagaimana saya bisa memfilter menurut pengguna sehingga saya hanya melihat komitmen dari pengguna itu?
Jawaban:
Ini berfungsi untuk keduanya git log
dan gitk
- 2 cara paling umum untuk melihat riwayat.
Anda tidak perlu menggunakan seluruh nama:
git log --author="Jon"
akan cocok dengan komit yang dibuat oleh "Jonathan Smith"
git log --author=Jon
dan
git log --author=Smith
juga akan bekerja. Kutipan bersifat opsional jika Anda tidak membutuhkan spasi.
Tambahkan --all
jika Anda bermaksud mencari semua cabang dan bukan hanya leluhur komit saat ini di repo Anda.
Anda juga dapat dengan mudah mencocokkan beberapa penulis karena regex adalah mekanisme yang mendasari filter ini. Jadi, untuk membuat daftar komitmen oleh Jonathan atau Adam, Anda dapat melakukan ini:
git log --author="\(Adam\)\|\(Jon\)"
Untuk mengecualikan komit oleh penulis atau set penulis tertentu menggunakan ekspresi reguler seperti yang disebutkan dalam pertanyaan ini , Anda dapat menggunakan lookahead negatif dalam kombinasi dengan --perl-regexp
sakelar:
git log --author='^(?!Adam|Jon).*$' --perl-regexp
Atau, Anda dapat mengecualikan komit yang dibuat oleh Adam dengan menggunakan bash
dan mengirim piping:
git log --format='%H %an' |
grep -v Adam |
cut -d ' ' -f1 |
xargs -n1 git log -1
Jika Anda ingin mengecualikan komitmen yang dilakukan (tetapi tidak harus ditulis) oleh Adam, ganti %an
dengan %cn
. Rincian lebih lanjut tentang ini ada di posting blog saya di sini: http://dymitruk.com/blog/2012/07/18/filtering-by-author-name/
gitk
cuti dari komitmen orang tua dari penulis lain? (Mereka ditunjukkan dengan lingkaran putih.) Sebaliknya, git log --graph
tidak menunjukkan komitmen induk; itu hanya menunjukkan komitmen penulis yang diberikan. Saya ingin melihat output yang sama di gitk
. (Sudah memeriksa Preferensi dan Edit Tampilan - tidak dapat menemukan sesuatu yang bermanfaat.)
git log --author="that user"
Di github ada juga cara rahasia ...
Anda dapat memfilter komit oleh penulis dalam tampilan komit dengan menambahkan param ?author=github_handle
. Misalnya, tautan https://github.com/dynjs/dynjs/commits/master?author=jingweno memperlihatkan daftar komitmen pada proyek Dynjs
git help log
memberi Anda halaman manual git log. Cari "penulis" di sana dengan menekan / dan kemudian mengetik "penulis", diikuti oleh Enter. Ketik "n" beberapa kali untuk sampai ke bagian yang relevan, yang mengungkapkan:
git log --author="username"
seperti yang sudah disarankan.
Perhatikan bahwa ini akan memberi Anda penulis komit, tetapi di Git, penulis dapat seseorang yang berbeda dari committer (misalnya dalam kernel Linux, jika Anda mengirimkan tambalan sebagai pengguna biasa, itu mungkin dilakukan oleh pengguna administratif lain .) Lihat Perbedaan antara penulis dan pengangkat di Git? untuk lebih jelasnya)
Sebagian besar waktu, apa yang disebut sebagai pengguna adalah pengalih dan pengarang.
Untuk menarik lebih detail - (Di sini %an
merujuk pada penulis)
Gunakan ini :-
git log --author="username" --pretty=format:"%h - %an, %ar : %s"
%ae
bukan %an
(yang memberi nama.)
--author
sebenarnya mencari berdasarkan nama penulis dan bukan nama pengalih. Saya akan berubah "username"
menjadi penulis
cat | git log --author="authorName" > author_commits_details.txt
Ini memberikan komitmen Anda dalam format teks.
cat |
?
Jika Anda ingin memfilter komitmen Anda sendiri:
git log --author="<$(git config user.email)>"
coba alat ini 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]
```
Di bawah ini adalah deskripsi untuk masing-masing bendera
- `-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
Perlihatkan n jumlah log untuk x pengguna berwarna dengan menambahkan potongan kecil ini dalam file .bashrc Anda.
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
Untuk menampilkan 10 komitmen terakhir oleh Frank:
l 10 frank
Untuk menampilkan 20 komitmen terakhir oleh siapa pun:
l 20
Jika menggunakan GitHub:
itu akan menampilkan daftar dalam format di bawah ini
branch_x: < comment>
author_name committed 2 days ago
Anda dapat menggunakan = atau "spasi". Misalnya, mengikuti dua perintah, kembalikan sama
git log --author="Developer1"
git log --author "Developer1"
Kasus saya: Saya menggunakan kode sumber, saya mengikuti langkah-langkah berikut:
CRL+3
Meskipun, ada banyak jawaban yang bermanfaat. Padahal, hanya menambahkan cara lain untuk itu. Anda juga bisa menggunakan
git shortlog --author="<author name>" --format="%h %s"
Ini akan menampilkan output dalam cara yang dikelompokkan:
<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
Di sini, total 5 komit dilakukan di <Author Name>
bawah cabang saat ini. Sedangkan, Anda juga dapat menggunakan --all
untuk menegakkan pencarian di mana-mana (semua cabang) di repositori git.
Satu tangkapan: git secara internal mencoba mencocokkan input <author name>
dengan nama dan email penulis di basis data git. Ini case-sensitive .
github
?