Rapat sprint rutin memunculkan pertanyaan yang tidak bisa dijawab git blame: siapa menyumbang apa sepanjang dua pekan ini, dan berapa commit masing-masing? Menjelajahi git log sambil mencoret-coret jurnal bukan jawaban — pertanyaannya agregat, dan Git punya perintah yang memang lahir untuk agregat: git shortlog mengelompokkan seluruh commit per penulis, menghitungnya, lalu menyusun ringkasannya siap-baca. Chapter ini membangun repository dua penulis dengan dua sprint, lalu membedah format, penyortiran, filter tanggal, sampai perbandingannya dengan pipeline sort | uniq -c yang sering dirakit manual.
Repository Latihan: Dua Penulis, Dua Sprint #
Glosarium istilah Git dikembangkan bergantian oleh Budi dan Siti selama dua sprint: pekan pertama tanggal 6 Oktober, pekan kedua tanggal 13 Oktober. Identitas Siti disisipkan per-commit lewat opsi -c — pola dari chapter Opsi git log
:
mkdir latihan-shortlog && cd latihan-shortlog
git init -b main
git config user.name "Budi Santoso"
git config user.email "[email protected]"
printf 'commit: snapshot perubahan yang tersimpan dalam riwayat\nrepository: tempat Git menyimpan seluruh riwayat proyek\n' > glosarium.txt
git add glosarium.txt
git commit -m "Tambah struktur awal glosarium"
printf 'commit: snapshot perubahan yang tersimpan dalam riwayat\nrepository: tempat Git menyimpan seluruh riwayat proyek\nstaging area: area penampung perubahan sebelum dicatat\n' > glosarium.txt
git add glosarium.txt
git -c user.name="Siti Rahma" -c user.email="[email protected]" \
commit -m "Tambah istilah staging area"
printf 'commit: snapshot seluruh isi proyek yang dicatat dalam riwayat\nrepository: tempat Git menyimpan seluruh riwayat proyek\nstaging area: area penampung perubahan sebelum dicatat\n' > glosarium.txt
git add glosarium.txt
git commit -m "Perbaiki definisi commit"
printf 'commit: snapshot seluruh isi proyek yang dicatat dalam riwayat\nrepository: tempat Git menyimpan seluruh riwayat proyek\nstaging area: area penampung perubahan sebelum dicatat\nworking tree: isi direktori kerja pada saat ini\n' > glosarium.txt
git add glosarium.txt
git -c user.name="Siti Rahma" -c user.email="[email protected]" \
commit -m "Tambah istilah working tree"
printf 'Istilah tersusun menurut abjad.\nJumlah istilah bertambah setiap sprint.\n' > daftar-isi.txt
git add daftar-isi.txt
git commit -m "Tambah daftar isi glosarium"
printf 'commit: snapshot seluruh isi proyek yang dicatat dalam riwayat\nrepository: tempat Git menyimpan seluruh riwayat proyek\nstaging area: area penampung perubahan sebelum dicatat\nworking tree: isi direktori kerja pada saat ini\nremote: salinan repository di tempat lain\n' > glosarium.txt
git add glosarium.txt
git -c user.name="Siti Rahma" -c user.email="[email protected]" \
commit -m "Tambah istilah remote"
printf 'commit: snapshot seluruh isi proyek yang dicatat dalam riwayat\nremote: salinan repository di tempat lain\nrepository: tempat Git menyimpan seluruh riwayat proyek\nstaging area: area penampung perubahan sebelum dicatat\nworking tree: isi direktori kerja pada saat ini\n' > glosarium.txt
git add glosarium.txt
git -c user.name="Siti Rahma" -c user.email="[email protected]" \
commit -m "Rapikan urutan istilah"Tujuh commit terkumpul: tiga dari Budi, empat dari Siti. Kini ringkasannya:
git shortlogOutput yang Dihasilkan:
Budi Santoso (3):
Tambah struktur awal glosarium
Perbaiki definisi commit
Tambah daftar isi glosarium
Siti Rahma (4):
Tambah istilah staging area
Tambah istilah working tree
Tambah istilah remote
Rapikan urutan istilahFormatnya sederhana: satu blok per penulis, dibuka baris nama (jumlah):, lalu daftar judul commit terindentasi enam spasi. Sejauh ini shortlog tampak seperti git log yang dikelompokkan ulang — kekuatannya baru terlihat setelah opsi-opsinya bekerja.
Hanya Angka dengan -s, Surel dengan -e #
Rapor sprint biasanya tidak memuat judul commit — cukup angka. Opsi -s (summary) memangkas daftar judul dan menyisakan hitungan:
git shortlog -s HEADOutput yang Dihasilkan:
3 Budi Santoso
4 Siti RahmaOpsi -e (email) menambahkan alamat surel di samping nama — berguna ketika dua penulis berbagi nama depan:
git shortlog -sne HEADOutput yang Dihasilkan:
4 Siti Rahma <[email protected]>
3 Budi Santoso <[email protected]>Kolom angka rata kanan dan dipisah tab dari nama, sehingga deretnya sejajar rapi meski jumlahnya mencapai ribuan.
Penyortiran: Alfabetis vs Jumlah #
Susunan kedua keluaran di atas berbeda — dan itu bukan kebetulan. Bawaan shortlog menyusun penulis menurut nama secara alfabetis: Budi Santoso mengawali daftar pada keluaran -s meskipun jumlahnya lebih sedikit. Opsi -n mengganti kriteria penyortiran menjadi jumlah commit menurun, sehingga -sn menempatkan Siti Rahma dengan empat commit di atas. Opsi -n juga berlaku pada format panjang: git shortlog -n HEAD memindahkan blok Siti ke atas dengan daftar judul lengkap. Aturan cepatnya: laporan “siapa paling aktif” memakai -sn; daftar kontak tim memakai urutan alfabetis bawaan.
Laporan Sprint dengan Filter Tanggal #
Shortlog mewarisi seluruh filter tanggal dari git log — kombinasi yang tepat untuk laporan per-sprint. Sprint kedua dimulai 13 Oktober:
git shortlog -sn --since="2026-10-13 00:00:00" HEADOutput yang Dihasilkan:
3 Siti Rahma
1 Budi SantosoTiga dari empat commit sprint kedua adalah milik Siti; satu-satunya kontribusi Budi pekan itu adalah daftar isi. Angka laporan ini bisa langsung disandingkan dengan sprint pertama lewat --until="2026-10-13 00:00:00" (Budi dua, Siti satu) — pola --since/--until dan jebakan penulisan tanggalnya sudah dibedah di chapter Opsi git log
, termasuk alasan kita menulis jam lengkap 00:00:00 pada batas tanggal.
Format Entri dengan –format #
Judul commit bukan satu-satunya isi yang bisa ditampilkan. Opsi --format menerima placeholder keluarga yang sama dengan chapter Format Log
:
git shortlog --format="%h %s" HEADOutput yang Dihasilkan:
Budi Santoso (3):
4017d75 Tambah struktur awal glosarium
f58b212 Perbaiki definisi commit
ab07f66 Tambah daftar isi glosarium
Siti Rahma (4):
67475df Tambah istilah staging area
6e759c6 Tambah istilah working tree
9bab255 Tambah istilah remote
f1c266d Rapikan urutan istilahKelompok per penulis tetap dijaga; %h %s hanya mengganti isi tiap entri menjadi hash pendek plus judul. Placeholder %an — nama penulis — pun berlaku, dan bentuk %an inilah bahan baku dari alternatif yang selama ini banyak dirakit manual untuk kebutuhan serupa.
Alternatif Rakyat: log, sort, uniq #
Pipeline tiga perintah itu layak diuji agar perbandingannya jujur:
git log --format=%an | sort | uniq -cOutput yang Dihasilkan:
3 Budi Santoso
4 Siti RahmaPipeline menghasilkan hitungan yang benar — nama tiap penulis dicetak git log lewat %an, disusun sort, lalu dihitung uniq -c. Namun hasilnya mentah: urutannya alfabetis tanpa opsi jumlah, tidak ada surel, tidak ada filter tanggal terpusat, dan formatnya bergantung pada perilaku tiga alat yang berbeda. Shortlog mencapai hasil yang lebih kaya dalam satu perintah yang dirancang khusus — daftar lengkap opsi pembacaannya terdokumentasi di dokumentasi git shortlog
.
Ringkasan kontribusi menjawab siapa dan berapa. Pertanyaan investigasi bergerak ke arah lain: kapan sebuah teks masuk atau keluar dari kode — dan untuk itu kita butuh mengais diff, bukan menghitung commit. Alatnya dibahas di chapter berikutnya: Mencari Commit .