Daftar semua pengembang pada proyek di Git

207

Apakah mungkin untuk mendaftar semua pengguna yang berkontribusi pada proyek (pengguna yang telah melakukan komitmen) di Git?

Adakah statistik tambahan?

Ritam Nemira
sumber

Jawaban:

390

Untuk menampilkan semua pengguna & email, dan jumlah komit di cabang CURRENT:

git shortlog --summary --numbered --email

Atau sederhananya:

git shortlog -sne

Untuk menampilkan pengguna dari semua cabang (tidak hanya yang ada di cabang saat ini) Anda harus menambahkan --alltanda:

git shortlog -sne --all
Pedro Nascimento
sumber
3
Perhatikan bahwa jika Anda ingin menggunakan perintah ini dari dalam skrip, atau sesuatu seperti "semut", Anda harus menentukan revisi atau tidak menghasilkan apa-apa. Untuk revisi saat ini Anda dapat menggunakan KEPALA:git shortlog -sn HEAD
Majenko
59
Untuk mendapatkan alamat email juga, tambahkan -e.
mic_e
10
Untuk menunjukkan kepada pengguna dari semua cabang (tidak hanya yang ada di cabang saat ini) Anda harus menambahkan --allbendera
Gian Marco Gherardi
3
bagaimana jika saya tidak ingin jumlah komit?
Wearybands
1
Ini juga bagus untuk memeriksa siapa yang menyentuh file tertentu daripada keseluruhan proyek. git shortlog --summary --numbered <pathToFile>
jxramos
40

Jika Anda ingin lebih spesifik dalam daftar (temukan daftar pengalih dan pengarang unik), Anda dapat menggunakan git log:

git log --pretty="%an %ae%n%cn %ce" | sort | uniq
  • %an nama penulis
  • %ae email penulis
  • %n garis baru
  • %cn nama pengendara
  • %ce email komuter

Placeholder lain dijelaskan dalam dokumentasi cetak cantikgit log .

Guillaume Vincent
sumber
Saya pikir %ntidak masuk akal jika dikombinasikan dengan (berbasis garis) sort, bukan? Log baris penulis / nama pengangkat / email dalam baris terpisah, tetapi memilah seluruh output ...
ssc
@ssc committer email dapat berbeda dari email penulis. % n adalah untuk baris baru untuk menemukan perbedaan itu
Guillaume Vincent
19

Anda dapat mencoba ini:

git log | grep Author: | sort | uniq
Santa Zhang
sumber
1
Ini adalah perintah paling berguna bagi siapa pun yang tertarik untuk memperbarui file .mailmap mereka!
Ahi Tuna
7

(pengguna yang telah melakukan komit)

Catatan: secara default git shortloggrup dilakukan oleh penulis .

Jika Anda perlu mengelompokkannya berdasarkan committer, Anda perlu Git 2.12 (Q1 2017)

git shortlog -snc

Lihat komit 03f4082 (16 Des 2016) oleh Jeff King ( peff) .
Lihat komit fbfda15 (11 Okt 2016) oleh Linus Torvalds ( torvalds) .
(Digabung oleh Junio ​​C Hamano - gitster- dalam komit ad1b4e2 , 27 Des 2016)

Linus Torvalds sendiri memperkenalkan fitur ini:

shortlog: dikelompokkan berdasarkan informasi pengangkut

Dalam beberapa situasi Anda mungkin ingin mengelompokkan komit bukan oleh penulis, tetapi oleh komiter sebagai gantinya.

Misalnya, ketika saya hanya ingin mencari apa yang masih saya lewatkan dari linux-nextjendela penggabungan saat ini, saya tidak terlalu peduli tentang siapa yang menulis tambalan, seperti apagit tree asalnya, yang umumnya bermuara pada "siapa yang berkomitmen Itu".

Jadi buat git shortlog mengambil opsi " -c" atau " --committer" untuk mengalihkan pengelompokan itu.

VONC
sumber
2

Pilihan lain dapat:

git log --format='%aN' | sort -u
ΦXocę 웃 Пepeúpa ツ
sumber
1

Saya belum sempat mengujinya sendiri, tetapi ini terlihat sangat bagus untuk statistik proyek untuk repositori Git: https://github.com/visionmedia/git-extras

Lihat binkatalog untuk melihat skrip yang berbeda.

Misalnya, git-countskrip (jumlah komit per komuter):

git shortlog -n $@ | grep "):" | sed 's|:||'
Daniel Lee
sumber
1
git shortlog -ns sepertinya kurang hackish
TomDLT
@ TomDLT sejak saya memposting ini 4 tahun yang lalu, contoh script ini di git-ekstra telah berubah. Tapi saya pikir saran saya untuk melihat skrip git dari proyek seperti git-ekstra atau dari dotfile orang masih merupakan saran yang bagus. Jika Anda mencari perintah git yang menarik maka saya akan merekomendasikan dotfiles Gary Bernhardt juga: github.com/garybernhardt/dotfiles/tree/master/bin
Daniel Lee
1

Jawaban yang bagus oleh @ pedro-nascimento, oleh @mic_e dan lainnya sudah menyelesaikan masalah.

Selain itu, Anda dapat menambahkan baris berikut ke .gitconfig

contributors = shortlog -e --summary --numbered

atau dalam tipe shell

git config --global alias.contributors 'shortlog -e --summary --numbered'

Dan setelah itu Anda bisa memohon: git contributors

adem
sumber
1
Anda mungkin harus menambahkan catatan bahwa setelah menyetel ini, Anda cukup menelepongit contributors
lohfu