Dua pertanyaan investigasi yang paling sering muncul pada proyek nyata adalah apa yang sebenarnya dilakukan sebuah commit dan dari commit mana sebuah baris berasal. Topik ini membahas dua perintah yang menjawabnya: git show untuk membedah satu commit secara utuh, dan git blame untuk menelusuri asal setiap baris berkas. Keduanya bekerja di atas struktur commit yang telah dibedah sebelumnya, sehingga keluarannya dapat dibaca tanpa menebak.
Membedah satu commit dengan git show#
Perintah git show menampilkan sebuah commit sebagai satu paket, yaitu metadata beserta diff yang dibawanya. Tanpa argumen, commit yang diperiksa adalah HEAD.
# tanggal commit ditetapkan agar keluaran contoh dapat direproduksi secara persis
export GIT_AUTHOR_DATE="2026-11-01T09:00:00+07:00"
export GIT_COMMITTER_DATE="2026-11-01T09:00:00+07:00"rm -rf /tmp/lab-show
mkdir /tmp/lab-show
cd /tmp/lab-show
git init -b main
git config user.name "Budi"
git config user.email "[email protected]"
printf "Kalkulator sederhana.\n" > catatan.txt
git add catatan.txt
git commit -m "Kalkulator versi awal"
export GIT_AUTHOR_DATE="2026-11-01T10:30:00+07:00"
export GIT_COMMITTER_DATE="2026-11-01T10:30:00+07:00"
printf "Kalkulator sederhana.\nMendukung operasi pengurangan.\n" > catatan.txt
git commit -am "Tambah pengurangan"
git showInitialized empty Git repository in /tmp/lab-show/.git/
[main (root-commit) 00227fe] Kalkulator versi awal
1 file changed, 1 insertion(+)
create mode 100644 catatan.txt
[main ab6e57c] Tambah pengurangan
1 file changed, 1 insertion(+)
commit ab6e57c4ee32cc9d904a88077490e038f35d42c5
Author: Budi <[email protected]>
Date: Sun Nov 1 10:30:00 2026 +0700
Tambah pengurangan
diff --git a/catatan.txt b/catatan.txt
index e5028ca..678a5d6 100644
--- a/catatan.txt
+++ b/catatan.txt
@@ -1 +1,2 @@
Kalkulator sederhana.
+Mendukung operasi pengurangan.Keluaran git show menyatukan tiga hal yang pada perintah lain terpisah: metadata commit seperti yang tampil pada git log, dan diff commit itu seperti yang dihasilkan git diff HEAD~1 HEAD. Karena itu git show menjadi titik awal yang tepat ketika sebuah hash perlu ditafsirkan, misalnya dari laporan bug atau dari daftar commit pada platform. Commit mana pun dapat diperiksa dengan menyebut hash atau nama relatifnya seperti HEAD~1, dan opsi --stat meringkas keluaran menjadi daftar berkas saat diff penuh belum diperlukan.
Menelusuri asal baris dengan git blame#
Perintah git blame membaca berkas baris demi baris dan menampilkan commit yang terakhir mengubah setiap barisnya.
git blame catatan.txt^00227fe (Budi 2026-11-01 09:00:00 +0700 1) Kalkulator sederhana.
ab6e57c4 (Budi 2026-11-01 10:30:00 +0700 2) Mendukung operasi pengurangan.Setiap baris keluaran memuat lima bagian: hash commit yang mengubah baris itu, nama penulisnya, waktu commit, nomor baris, dan isi barisnya. Baris pertama menunjuk commit pertama dengan hash yang diawali tanda sirkumfleks, yaitu tanda bahwa penelusuran berhenti pada batas riwayat karena commit itu tidak memiliki induk yang lebih tua. Waktu pada kedua baris berbeda karena commit kedua sengaja dibuat pada jam yang berbeda pada contoh ini.
Blame menjawab pertanyaan siapa dan kapan dengan tepat, dan penerusnya adalah bertanya mengapa. Kombinasi yang lazim adalah mengambil hash dari blame, lalu memeriksa commitnya dengan git show untuk membaca pesan dan konteks perubahannya.
Membatasi rentang blame#
Pada berkas panjang, blame penuh menghasilkan keluaran sepanjang berkas, dan opsi -L membatasinya pada rentang baris.
git blame -L 2,2 catatan.txtab6e57c4 (Budi 2026-11-01 10:30:00 +0700 2) Mendukung operasi pengurangan.Argumen -L menerima rentang berbentuk awal,akhir dan juga bentuk lain seperti awal,+n untuk n baris dari titik awalnya. Pada kasus baris yang berpindah karena pemformatan ulang, flag -w mengabaikan perubahan spasi sehingga pencarian tetap menemukan commit yang benar-benar mengubah logika.
Batas tafsir blame#
Blame menampilkan commit terakhir yang menyentuh baris, dan itu tidak selalu commit yang mengubah makna baris. Commit pemformatan ulang, pergeseran indentasi, atau pemindahan berkas membuat blame menunjuk commit kosmetik alih-alih commit substansi. Apabila keluaran blame terasa tidak membantu, periksa commit yang ditunjuknya terlebih dahulu, lalu telusuri ke belakang dengan git log pada berkas yang bersangkutan untuk menemukan commit yang berisi keputusan yang dicari.
Ringkasan#
git showmenyatukan metadata dan diff satu commit, sehingga satu hash dapat ditafsirkan tanpa perintah tambahan.git blamemenampilkan commit penulis dan waktu untuk setiap baris, dengan hash berawalan sirkumfleks pada batas riwayat.- Opsi
-Lmembatasi blame pada rentang baris, dan-wmengabaikan perubahan spasi. - Blame menjawab siapa dan kapan, sedangkan pertanyaan mengapa dijawab dengan memeriksa commit yang ditunjuk melalui
git show.
Referensi#
- git-show — Git Documentation
— rujukan bentuk keluaran
git showuntuk berbagai jenis objek. - git-blame — Git Documentation
— rujukan opsi
git blame, termasuk-Ldan-w.